将文件从一台远程服务器发布到另一台服务器

问题描述:

我正在编写谷歌浏览器扩展程序。我有一个远程服务器上的二进制文件的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

“..文件很可能是已经加载到活动选项卡中的图像,所以最好使用缓存而不要再次下载此文件。”

  1. 如果您保存在本地(如使用本地存储或fileAPI)的文件 - 那么你应该确保你读它,并得到一个文件备份,而不是数据的序列化版本。

  2. 我会调试'var file = ???'这一行,看看你到达那里的目标是什么。

  3. 这是一个很好的做法,有这3个功能为您的'请求': onload,onerror和onprogress。

我希望它有帮助。