Угловой 4: какой файловый сборник использовать для получения полного имени пути к выбранному файлу? [Дубликат]

Ну, я разработчик JavaScript и попытаюсь объяснить его значение, относящееся к JavaScript.

Рассмотрим сценарий, в котором вы хотите сопоставить cat is animal, когда вы хотите совместить кошку и животное, и оба должны иметь a is между ними.

 // this will ignore "is" as that's is what we want
"cat is animal".match(/(cat)(?: is )(animal)/) ;
result ["cat is animal", "cat", "animal"]

 // using lookahead pattern it will match only "cat" we can
 // use lookahead but the problem is we can not give anything
 // at the back of lookahead pattern
"cat is animal".match(/cat(?= is animal)/) ;
result ["cat"]

 //so I gave another grouping parenthesis for animal
 // in lookahead pattern to match animal as well
"cat is animal".match(/(cat)(?= is (animal))/) ;
result ["cat", "cat", "animal"]

 // we got extra cat in above example so removing another grouping
"cat is animal".match(/cat(?= is (animal))/) ;
result ["cat", "animal"]
165
задан Yogesh Pingle 4 March 2013 в 14:24
поделиться

9 ответов

В целях безопасности браузеры этого не допускают, то есть JavaScript в браузере не имеет доступа к файловой системе, однако, используя API файлов HTML5, только Firefox предоставляет свойство mozFullPath, но если вы попытаетесь получить значение, оно вернет пустая строка:

$('input[type=file]').change(function () {
    console.log(this.files[0].mozFullPath);
});

http://jsfiddle.net/SCK5A/

Поэтому не теряйте время.

edit: Если вам нужен путь к файлу для чтения файла, вы можете использовать API FileReader . Вот связанный вопрос о SO: Предварительный просмотр изображения перед его загрузкой.

103
ответ дан SaidbakR 23 August 2018 в 20:40
поделиться

Вы можете, если вы загружаете целую папку для вас

<input type="file" webkitdirectory directory multiple/>

, событие изменения будет содержать:

.target.files[...].webkitRelativePath: "FOLDER/FILE.ext"
1
ответ дан Blauhirn 23 August 2018 в 20:40
поделиться

вы никогда не должны этого делать .... и я думаю, что попробовать его в последних браузерах бесполезно (из того, что я знаю) .. все последние браузеры, с другой стороны, не позволят этого ....

некоторые другие ссылки, которые вы можете пройти, чтобы найти обходной путь, как получение значения serveride, но не в clientide (javascript)

Полный путь от ввода файла с помощью jQuery Как получить путь к файлу из формы ввода HTML в Firefox 3

1
ответ дан Community 23 August 2018 в 20:40
поделиться

Вы не можете этого сделать - браузер не допустит этого из-за проблем с безопасностью.

Когда файл выбирается с использованием типа input type = file, значение свойства value зависит о значении параметра безопасности «Включить локальный каталог при загрузке файлов на сервер» для зоны безопасности, используемой для отображения веб-страницы, содержащей входной объект.

Полноценное имя файла выбранного файла возвращается, только когда этот параметр включен. Когда параметр отключен, Internet Explorer 8 заменяет путь локального диска и каталога на строку C: \ fakepath \, чтобы предотвратить неприемлемое раскрытие информации.

И другие

Вы пропустили ); это в конце функции события изменения.

Также не создавайте функцию для события изменения, а просто используйте ее, как показано ниже,

<script type="text/javascript">

    $(function()
    {
        $('#fileUpload').on('change',function ()
        {
            var filePath = $(this).val();
            console.log(filePath);
        });
    });

</script>
17
ответ дан Dipesh Parmar 23 August 2018 в 20:40
поделиться

имеет элемент массива и вызов массива files содержит все необходимые вам материалы

var file = document.getElementById("upload");

file.addEventListener("change", function() {
    for (var i = 0; i < file.files.length; i++) {
        console.log(file.files[i].name);
    }
}, false);
0
ответ дан Jeeva Kumar 23 August 2018 в 20:40
поделиться

Вы не можете. Безопасность останавливает вас за то, что вы знаете что-либо о системе подачи клиентского компьютера - у нее может и не получиться! Это может быть MAC, ПК, планшет или интернет-холодильник - вы не знаете, не можете знать и не знать. И пусть вам полный путь может дать вам некоторую информацию о клиенте - особенно, если это сетевой диск, например.

Фактически вы можете получить его в определенных условиях, но для этого требуется элемент управления ActiveX, и не будет работать в 99,99% случаев.

Вы все равно не можете использовать его для восстановления файла в исходное местоположение (так как вы абсолютно не контролируете, где хранятся загрузки, или даже если они хранится), так что на практике это не так много для вас.

11
ответ дан Rajshekar Reddy 23 August 2018 в 20:40
поделиться

Вы имели в виду это?

$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
    $("img").fadeIn("fast").attr('src',tmppath);       
});

10
ответ дан Rubyrider 23 August 2018 в 20:40
поделиться

Вы можете использовать следующий код для получения рабочего локального URL для загруженного файла:

<script type="text/javascript">    
    var path = (window.URL || window.webkitURL).createObjectURL(file);
    console.log('path', path);
</script>
5
ответ дан Steffen Brem 23 August 2018 в 20:40
поделиться

Попробуйте это:

Это даст вам временный путь, а не точный путь, вы можете использовать этот скрипт, если хотите показать выбранные изображения, как в этом примере jsfiddle (Попробуйте, выбрав изображения как а также другие файлы): -

JSFIDDLE

Вот код: -

HTML: -

<input type="file" id="i_file" value=""> 
<input type="button" id="i_submit" value="Submit">
<br>
<img src="" width="200" style="display:none;" />
<br>
<div id="disp_tmp_path"></div>

JS: -

$('#i_file').change( function(event) {
    var tmppath = URL.createObjectURL(event.target.files[0]);
    $("img").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0]));

    $("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>");
});

Не то, что вы искали, но может быть, это может помочь вам где-то.

87
ответ дан Vlad Bezden 23 August 2018 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: