2015-08-25 5 views
1

У меня есть этот код:OnChange ввода с Javascript

<input type="file" onchange="showUrl(this.value)" name="upload[]" multiple="multiple"> 
    <button type="button" class="btn btn-success"><i class="icon icon-plus"></i> Add file</button></span> 
    <input type="submit" class="btn btn-primary" value="Upload"><br><br><span id="url"></span> 

и это Java-функция

function showUrl(url) { 
    document.getElementById("url").innerHTML = url; 
} 

Я хочу, чтобы показать URL каждого файла, который пользователь выбирает с помощью кнопки «входного файла». Функция показывает только URL-адрес первого файла. Кто-то может мне помочь? Thanks

+0

@teemu я пишу php в заголовке, потому что я использую php с js :) – hteo

ответ

1

Javascript

<script type="text/javascript"> 
function showUrl() { 
    var allFiles = document.getElementById("myFiles"); 

    if ('files' in allFiles) { 
     if (allFiles.files.length > 0) { 
      for (var i = 0; i < allFiles.files.length; i++) { 
       document.getElementById("url").innerHTML += "<br />"+allFiles.files[i].name; 
// note you can mess with proprieties here, like 'size' 
      } 
     } 
    } 
} 
</script> 

HTML

<body> 
    <input type="file" onchange="showUrl()" name="upload[]" id="myFiles" multiple="multiple"> 
    <button type="button" class="btn btn-success"><i class="icon icon-plus"></i> Add file</button></span> 
    <input type="submit" class="btn btn-primary" value="Upload"> 
    <br /><br /> 
    <span id="url"></span> 
</body> 
+0

Нет, это не работает – hteo

+0

@hteo это не работает или не соответствует вашим потребностям? Я отредактирую с результатом, который я получаю (который работает!) – lockedz

+0

Я также использую Chrome, но код показывает только один путь ... Я действительно не понимаю – hteo

0

Я не уверен, что вы после. попробуйте:

function showUrl(url) { 
    document.getElementById("url").innerHTML += url; 
} 
+0

Нет, он не работает – hteo

2

Во-первых, изменить свой вклад:

<input type="file" onchange="showUrl(this)" name="upload[]" multiple="multiple">

Затем измените JS на:

function showUrl(url) { 
    for(var i = 0; i < url.files.length; i++) { 
    document.getElementById("url").innerHTML += url.files[i].name; 
    } 
} 

Таким образом, вы будете иметь возможность читать все выбранные файлы на входе файлов.

+0

Нет, если я пишу функцию showUrl (url) { для (var i = 0; i hteo

+1

@hteo: Я отредактировал свой ответ, чтобы лучше подойти к вашему вопросу. – Marcovecchio

1

Я не думаю, что вы можете получить полный путь, но вы можете получить имя файла, передав this.files вместо this.value

function showUrl(url) { 
    for(var i = 0; i < url.length; i++) 
    { 
     document.getElementById("url").innerHTML += url[i].name + "<br>"; 
    } 
} 
+0

С вашим методом результат (почти правильный): [object File] [object File] – hteo

+1

Извините, забыли получить доступ к свойству 'name' в' url [i] '. Должно быть сейчас. – Jez

Смежные вопросы