我正在撰写Google Chrome扩展程序。我在远程服务器上有二进制文件的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
。
答案 0 :(得分:0)
“..文件可能是已在活动标签中加载的图像,因此最好使用缓存而不是再次下载此文件。”
如果您在本地保存文件(例如使用localStorage或fileAPI) - 那么您应该确保阅读它并获取文件而不是序列化版本的数据。
我会调试'var file = ???'的行看看你到达那里的对象是什么。
为您的“请求”提供这3个功能是一种好习惯: onload,onerror和onprogress。
我希望它有所帮助。