标头数据覆盖 XMLHttpRequest 中的帖子数据



我正在尝试实现一个文件(图像)上传API,如下所示:
媒体火文件上传

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

*我的虚拟主机服务对执行时间和带宽有限制。

截至目前,我成功地发送了上述API中给出的GETPOST参数,并且该文件正在上传到我的mediafire帐户中。但是,由于同源策略,无法收到响应。

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 更改为选项,并且 mediafire 帐户中没有操作(文件未上传)。

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

对于 POST 请求,

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

相关内容

  • 没有找到相关文章

最新更新