我正在编写一个上传器,必须能够将任意大小的文件(最多30gig)传输到服务器。
我的初衷是编写一个java applet,将文件分解成碎片,将它们发送到服务器,然后在那里重新组装。
然而,有人建议AJAX的XMLHttpRequest可以与nsIFileInputStream一起完成这项工作 (例如:https://developer.mozilla.org/en/using_xmlhttprequest#Sending_files_using_a_FormData_object) 并使用PUT而不是POST。
我很担心两件事似乎无法找到答案。
1)AJAX会在发送之前尝试将文件读入内存(这显然会破坏整个文件)
[编辑] 这个http://www.codeproject.com/KB/ajax/AJAXFileUpload.aspx?msg=2329446示例明确声明他们正在使用ActiveXObject,因为它不会将文件加载到内存中...这告诉我XMLHttpRequest会将其加载到内存中。老实说,我很难过这么难找到这些信息。
2)这种方法的可靠性如何。我意识到,如果连接刚刚死亡,上传将不得不从头开始,但实际上,使用标准电缆连接的上传限制大约为0.5MB / s,30 gig文件到达服务器的可能性有多大?
答案 0 :(得分:1)
我正在使用File Api和blob.slice尝试类似的东西,但事实证明它可以在大文件上启动内存。但是,你可以使用Google Gears,它可以在大片文件中播放得更好。它也不会导致切片顺序错误,FileReader与XHR结合使用频繁且随机。
但我发现(通常)通过JavaScript上传文件非常不稳定。