Загрузка на сервер PHP с использованием Ajax (XMLHttp POST) - PullRequest
0 голосов
/ 28 ноября 2011

Сейчас я использую метод ниже, чтобы загрузить файл в PHP

<form enctype="multipart/form-data" action="http://sserver.com/fileupload.php" method="POST">

<input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
<input type="hidden" name="filename" value="file_uploaded.gif" />
<input type="hidden" name="username" value="foobar"/>
 Please choose a file:
 <input name="uploaded" type="file" /><br />
 <input type="submit" value="Upload" />
 </form> 

Я прочитал $_POST и $_FILE в php, чтобы завершить загрузку следующим образом.

$target = $_SERVER['DOCUMENT_ROOT']."/test/upload/"; 
 $target = $target . basename( $_FILES['uploaded']['name']) ; 
 echo $target;
 $ok=1; 

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
 {
 echo "The file ". basename( $_FILES['uploaded']['name']). " has been uploaded";
 } 
 else {
 echo "Sorry, there was a problem uploading your file.";
 }

Мои вопросы: могу ли я изменить вышеуказанный код (HTML) на Ajax XMLHttpRequest без изменений в PHP.

1 Ответ

0 голосов
/ 28 ноября 2011

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

Существуют способы создания блоков загрузки в стиле AJAX с использованием фреймов, когда вся страница не перезагружается во время загрузки, но сама по себе это не простая задача. jQuery предоставляет несколько библиотек, чтобы сделать это проще.

РЕДАКТИРОВАТЬ Как справедливо отмечает ThiefMaster HTML5 предоставляет механизмы для более аккуратного выполнения этого действия.

...