通过AJAX发送文件时,它是否先被读入内存?

时间:2011-01-21 19:57:49

标签: ajax file-upload

我正在编写一个上传器,必须能够将任意大小的文件(最多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文件到达服务器的可能性有多大?

1 个答案:

答案 0 :(得分:1)

我正在使用File Api和blob.slice尝试类似的东西,但事实证明它可以在大文件上启动内存。但是,你可以使用Google Gears,它可以在大片文件中播放得更好。它也不会导致切片顺序错误,FileReader与XHR结合使用频繁且随机。

但我发现(通常)通过JavaScript上传文件非常不稳定。