2013-05-07 67 views
1

我使用ajaxform将图像上传到s3。图像被上传到S3,但我无法获得S3服务器的响应。我需要回复通知用户上传已完成。 据我所知,ajax表单jquery插件工作正常,因为如果我通过另一种形式替换这个表单,其中的动作url是与应用程序相同的服务器,而不是s3,它会成功(但我无法做到如果我必须将图像上传到s3)。 我已经尝试过除成功之外的其他事情,比如完成,错误,失败等等,但它没有任何意义。 这里的是代码的相关部分:没有通过ajax表单提交s3上传的回复

<script> 
     function submitMyForm(){ 
      $("#myForm").ajaxForm({ 
      success : function(result){ 
       alert(result); 
      } 
      }).submit(); 
     } 
</script> 
<form id="myForm" action="https://my-bucket-name.s3.amazonaws.com/" method="post" enctype="multipart/form-data"> 
     <input type="hidden" name="key" value="${filename}"> 
     <input type="hidden" name="AWSAccessKeyId" value="my-access-key-id"> 
     <input type="hidden" name="acl" value="private"> 
     <input type="hidden" name="success_action_redirect" value=""> 
     <input type="hidden" name="policy" value="my_policy"> 
     <input type="hidden" name="signature" value="my_signature"> 
     <input type="hidden" name="Content-Type" value="image/jpeg"> 
     File to upload to S3: 
     <input name="file" type="file"> 
</form> 
<button onclick="submitMyForm()">Submit</button> 

在控制台我得到这样的: [jquery.form]状态=完整。 我可以以某种方式使用它来捕获ajax表单的回调。 太困惑了,我现在。请帮忙。

回答

1

由于表单动作不属于您的服务器,因此在提交给S3时应避免使用ajax,这就是为什么在从服务器获取成功消息时出现问题的原因。

+2

是的..即使我认为如此 – 2013-05-21 22:14:07

+0

S3支持CORS,它允许你进行跨域调用。 Ajax上传是可能的! – 2013-11-18 15:52:14