我正在尝试实现文件(图像)上传 API,此处给出:
Mediafire 文件上传
我从客户端使用这个 API,这样文件只需要上传一次,服务器带宽不用于大文件。通过客户端上传也可以节省时间。
*我的网络托管服务对执行时间和带宽有限制。
截至目前,我成功地能够发送上述 API 中给出的GET和POST参数,并且文件正在上传到我的 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个解决方案:
- 在发送到上述 API 之前重命名文件
- 或发送 API 中显示的标头数据
我通过添加尝试了第二种解决方案:
xmlhttp.setRequestHeader("x-filename", "foobar1.jpg");
到上面的代码,但是它将表单方法从POST更改为OPTIONS,并且 mediafire 帐户中没有任何操作(文件未上传)。
我究竟做错了什么?有没有其他方法可以控制或至少知道 mediafire 帐户中上传文件的名称。