2010-04-12 47 views
5

我已经构建了一个表单来上传图片,并使用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),参数发送正常,但只有图像的文件名。

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

+1

为了记录,可以使用['FormData'](https://developer.mozilla.org/en/XMLHttpRequest/FormData)对象通过AJAX上传。该方法易于使用,目前由Chrome,Safari和Firefox支持。 – 2011-12-27 21:26:25

回答

6

我不相信你可以通过ajax发送文件出于安全原因。您必须将表单发布到iframe并从那里处理。

+0

击败我。 +1抵消 – 2010-04-12 02:39:22

+1

弃权的理由:因为你打败了别人的答案,因为你没有提供完整的工作解决方案,或者最终只是因为有人可以为任何原因投票。 – David 2010-04-12 03:15:16

+0

谢谢你们,这里说明的原因是有道理的。 – 2010-04-12 20:52:50

3

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

相关问题