【问题标题】:Where are my $_FILES? Ajax Uploading我的 $_FILES 在哪里? Ajax 上传
【发布时间】:2011-02-06 20:26:41
【问题描述】:

我已经构建了一个表单来上传图片,并使用 Prototype/PHP 进行处理。

$('image_upload').observe('submit', function() {

     var params = $H();
     params.set('name', $('image_title').value);
     params.set('from', $('from_who').value);
     params.set('upload_file', $('upload_file').value);

     new Ajax.Request('/files/upload_process.php', {
      method:'post',
      parameters: params,

      onSuccess: function(r) {
       $('uploadbox').update('<img src="/images/interface/thankyou.png" />');


      }

     })



    });

表单本身将数据发送到服务器,但是当我尝试输出 print_r($_FILES['upload_file']); 时,什么都没有出现,甚至没有一个空数组。

如果我输出print_r($_POST),则参数正确发送,但只有图像的文件名。

所以文件本身似乎没有被发送。 我该如何处理? 谢谢 丰富

【问题讨论】:

  • 为了记录,可以使用 FormData 对象通过 AJAX 上传。该方法使用方便,目前Chrome、Safari、Firefox均支持。

标签: php ajax upload prototypejs


【解决方案1】:

出于安全原因,我认为您不能通过 ajax 发送文件。您必须将表单发布到 iframe 并从那里处理它。

【讨论】:

  • 投反对票的原因:因为你在答案上击败了其他人,因为你没有提供完整的工作解决方案,或者最后只是因为有人可以出于任何原因投反对票。跨度>
  • 谢谢大家,这里所说的原因是有道理的。
【解决方案2】:

您不能使用 XHR 上传文件。
您需要使用 IFRAME 或 flash/Java 等浏览器插件。

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2016-07-03
    相关资源
    最近更新 更多