Отправить необработанные данные файла из ввода типа = файл через ajax - PullRequest
4 голосов
/ 22 февраля 2012

У меня есть простая форма:

<form enctype="multipart/form-data" id="imageupload">
   <input name="files" type="file" />
   <input type="button" value="Upload" />
</form>

Теперь я хочу отправить все файлы с помощью запроса ajax.

Этот пример работает, но в нем есть одна ошибка.В файле, который я сохраняю, есть дополнительная информация:

-----------------------------169443243924626
Content-Disposition: form-data; name="files"; filename="shelby.png"
Content-Type: image/png


       $.ajax({
       url: 'imageupload.php',  //server script to process data
       type: 'POST',
       xhr: function() {  // custom xhr
           myXhr = $.ajaxSettings.xhr();
           if(myXhr.upload){ // check if upload property exists
               myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
           }
           return myXhr;
       },
       //Ajax events
       //beforeSend: beforeSendHandler,
       //success: completeHandler,
       //error: errorHandler,
       // Form data
       data: new FormData($('#imageupload')[0]),
       //Options to tell JQuery not to process data or worry about content-type
       cache: false,
       contentType: 'multipart/form-data',
       processData: false
   });

Теперь я начинаю с этого:

$('#imageupload')[0].files.files[0]

Я могу нам. Имя Я получаю имя.но как я могу получить необработанные данные файла?

Ответы [ 3 ]

2 голосов
/ 22 февраля 2012
try this

 $filename =  $_FILES['ur_image']['name'] ;
 $filesize =  $_FILES['ur_image']['size']; 
 $erro     =  $_FILES['ur_image']['error']; //checks UPLOAD_ERR_OK
 $tmpname  = $_FILES['ur_image']['tmp_name'];              
 $dest     = ROOT_DIR.'/upload/logo/';
1 голос
/ 22 февраля 2012

Необработанные данные файла недоступны таким образом, до HTML 5 API javascript запрещали доступ к файлам в файловой системе.

В настоящее время в современном браузере вы можете использовать API файла javascript.

0 голосов
/ 15 сентября 2012

Это можно сделать с помощью файла API Apis HTML 5 (как уже упоминалось), но это все еще довольно сложно. То, как это делается в качестве неофициального стандарта, - это опубликовать результаты вашей формы в скрытом iframe и отправить форму через javascript. Когда сообщение загружается в iframe, вы включаете теги, которые вызывают функцию обратного вызова, определенную в родительском окне, такую ​​как window.parent.doSomething ();

Как вы публикуете в iframe?

Да, это невероятно глупо, но это действительно так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...