AJAX - загрузка файла (HTML 5) и PHP - PullRequest
2 голосов
/ 14 апреля 2011

Я чувствую себя совершенно не в своей тарелке, но чувствую себя так близко ...

Я пытаюсь загрузить файл с помощью AJAX. Я нашел этот урок http://blog.new -bamboo.co.uk / 2010/7/30 / html5-powered-ajax-file-uploads , и, похоже, до конца все шло хорошо. Кажется, я не могу получить доступ к файлу в PHP, т.е. используя $ _FILES ["foo"] ["name"]; и я не уверен, как загрузить, используя другие методы.

Я не ищу код, чтобы он был идеальным, просто был простым, чтобы я мог понять, что происходит. Заранее спасибо: -)

Вот мой код на стороне сервера:

HTML: Заголовок страницы

</head> 
<body>




  <form onsubmit='showUser(); return false;' enctype='multipart/form-data'>
    <input id='the-file' name='file' type='file' />
    <input type='submit'>
  </form>
  <br />


  <div id='txtHint'><b></b></div>

</body>

Javascript:

function showUser(str)
{
var fileInput = document.getElementById('the-file');
var file = fileInput.files[0];
var foo = file.fileName;

if (str=="")
 {
 document.getElementById("txtHint").innerHTML="";
 return;
 } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 xmlhttp.onreadystatechange=function()
  {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  }
 }
 xmlhttp.open("POST","new_film_pro.php",true);
 xmlhttp.setRequestHeader("Content-type", "multipart/form-data");
 xmlhttp.setRequestHeader("X-File-Type", file.type);
 xmlhttp.setRequestHeader("X-File-Name", foo);
 xmlhttp.send(file);
 }

PHP:

<?php


$postdata = file_get_contents("php://input");

echo "Name: " . $_SERVER['HTTP_X_FILE_NAME'] . "<br />";

?>

Ответы [ 3 ]

2 голосов
/ 14 апреля 2011

Посмотрите на http://aquantum -demo.appspot.com / file-upload

Написание простого JavaScript больше не такая хорошая идея. Используя библиотеки, как показано на этой странице, вы можете создать гораздо более мощную загрузку файлов, которая поддерживает несколько файлов, возобновляемые загрузки, индикатор выполнения и многие другие функции, которые вам действительно придется потратить, чтобы реализовать себя, но которые дают вашему пользователю лучший опыт.

0 голосов
/ 09 августа 2016

Вы можете использовать file_get_contents ('php: // input'), чтобы получить содержимое файла.

0 голосов
/ 14 апреля 2011

Я не уверен. Но в теге формы вы не указали метод

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