2013-08-03 2 views
0

У меня есть форма с двумя полями для загрузки файлов. Когда вы обрабатываете файлы, загруженные через HTML с помощью PHP, вы получаете массив $_FILES с множеством записей, таких как $_FILES['name'], $_FILES['tmp_name'] и т. Д., Которые содержат всю информацию о файле.Получение поля ввода файла с jQuery

Я хотел бы иметь возможность получить всю эту информацию с помощью jQuery. Просто делать $('[name="textfile1"]').val() просто дает мне C:/fakepath/test.txt, если я загружаю test.txt. Есть ли способ получить фактический массив информации? У меня есть куча текстовых полей ввода вместе с полями загрузки файлов, и я хочу иметь возможность передавать всю информацию сразу с помощью вызова AJAX.

<form action="" method="post" enctype="multipart/form-data"> 
     <div class="input"> 
      <p>Upload the sitelist (.txt files only):</p> 
      <input style="margin-top:0;margin-bottom:6px" type="file" name="textfile1" /><br />   
     </div> 

     <div class="input"> 
      <p>Upload the dictionary (.txt files only):</p> 
      <input style="margin-top:0;margin-bottom:6px" type="file" name="textfile2" /><br />   
     </div> 
    </form> 
+1

Посмотрите API-интерфейс HTML5. Здесь есть хороший учебник: http://www.html5rocks.com/en/tutorials/file/dndfiles/ –

ответ

1

Я ненавижу дождь на вашем параде, но это не представляется возможным.

PHP обрабатывает серверы на стороне сервера. Информация, сгенерированная при отправке формы (например, размер файла, тип файла, пути файла tmp и т. Д.), Генерируется в форме submit. Если это было возможно, проверка формы была бы намного проще, поскольку она могла проверять во время вставки файла. Тем не менее, это тоже будет угрозой безопасности, поскольку оно будет вызывать текущее имя пользователя (по путям файлов, содержащим имена пользователей).

Вы упомянули, что хотите нажать его через ajax. Файлы не могут быть отправлены асинхронно. Это можно сделать, просто отправив форму через ajax. Тем не менее, вы не сможете получить информацию о файлах, не пройдя сначала PHP &, генерируя переменные на стороне сервера.

Если вы просто хотите, чтобы имя файла & содержало другие общие сведения (а не пути, которые генерирует PHP), взгляните на API файлов HTML5 at HTML5Rocks' Tutorial for File APIs here.

Надеюсь, я помог вам. ;)

+1

Фактически вы можете читать файлы с использованием API файлов HTML5 и blob, если он был выбран в форме. –

+0

@BenFortune Да, я понимаю, что вы не можете прочитать временное местоположение, которое генерирует PHP, как он хотел выше. – 1234567

+0

Ему не понадобится временное местоположение, если он сможет прочитать текстовый файл из браузера и передать данные в AJAX. Хотя это не так много, как PHP. –