将文件从一台远程服务器发布到另一台服务器
问题描述:
我正在编写谷歌浏览器扩展程序。我有一个远程服务器上的二进制文件的URL。我想将该文件发布到其他服务器。所以相关的功能应该是这样的。将文件从一台远程服务器发布到另一台服务器
function postFileToExampleCom(fileUrl) {
var file = ???; // Blob with data from file located at fileUrl
var form = new FormData();
form.append('file', file);
var request = new XMLHttpRequest();
request.open('POST', 'http://example.com/post/', true);
request.send(form);
}
FormData.append()需要第二个参数为包含文件数据的Blob对象。什么是最好的方式来获得它?文件很可能是已经加载到活动选项卡中的图像,因此最好使用缓存并且不要再次下载此文件。
UPD:我试过用另一个XMLHttpRequest设置下载文件responseType = 'blob'
但奇怪的是它返回空的response
。
答
“..文件很可能是已经加载到活动选项卡中的图像,所以最好使用缓存而不要再次下载此文件。”
如果您保存在本地(如使用本地存储或fileAPI)的文件 - 那么你应该确保你读它,并得到一个文件备份,而不是数据的序列化版本。
我会调试'var file = ???'这一行,看看你到达那里的目标是什么。
这是一个很好的做法,有这3个功能为您的'请求': onload,onerror和onprogress。
我希望它有帮助。