0

我正在尝试实现文件(图像)上传 API,此处给出:
Mediafire 文件上传

从客户端使用这个 API,这样文件只需要上传一次,服务器带宽不用于大文件。通过客户端上传也可以节省时间。

*我的网络托管服务对执行时间和带宽有限制。

截至目前,我成功地能够发送上述 API 中给出的GETPOST参数,并且文件正在上传到我的 mediafire 帐户中。但是,由于Same Origin Policy ,无法收到响应。

Javascript代码:

var url = "http://www.mediafire.com/api/upload/upload.php?"+"session_token="+getCookie("mSession")+"&action_on_duplicate=keep";

xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
{
     if(xmlhttp.readyState==4)
     {
          alert("Uploaded");
     }
}

xmlhttp.open("POST", url);

var formData = new FormData();
formData.append("Filedata", document.getElementById("myFile").files[0]);
xmlhttp.send(formData);

到目前为止一切都很好,但是,由于 mediafire api 没有响应,我无法再访问上传的文件。但是,如果文件名已知,则有一种解决方法可以访问该文件。PS : Mediafire 保持与本地存储相同的名称,但如果 mediafire 帐户中存在同名文件,则会更改它。

所以可以有2个解决方案

  1. 在发送到上述 API 之前重命名文件
  2. 或发送 API 中显示的标头数据

我通过添加尝试了第二种解决方案:

xmlhttp.setRequestHeader("x-filename", "foobar1.jpg");

到上面的代码,但是它将表单方法从POST更改为OPTIONS,并且 mediafire 帐户中没有任何操作(文件未上传)。

我究竟做错了什么?有没有其他方法可以控制或至少知道 mediafire 帐户中上传文件的名称。

4

1 回答 1

0

对于POST请求,如果您提供自定义标头,浏览器将采用预检请求(选项而不是POST)。如果源允许,则浏览器接受 POST 请求。参考(cors

于 2013-10-31T02:59:16.837 回答