Http和文件上传 - 它是如何工作的(引擎盖下)

She*_*eff 16 .net html streaming file-io http

好吧,这可能看起来像一个noob问题,但我认识的许多Web开发人员都没有完全理解.

基本上,如何使用FileUpload控件的上传事件将文件从网页文件输入框上传到网络服务器(例如托管.net网站)?

我的理解是向服务器发出了一个请求流的帖子,然后将其传递回浏览器并开始将数据流传输到服务器.

我的朋友说他的理解是整个文件被浏览器编码到post请求中,然后(大量)帖子被发送到服务器.

我认为这可能不是这样的情况,因为没有办法建立一个ajax进度条,因为服务器将无法做任何事情,直到它收到整个帖子,到那时它可能只是保存文件到其磁盘.

那么它从浏览器到服务器的实际工作方式呢?

Jon*_*upp 9

你的朋友是对的.如果你想要一个AJAX进度条,你必须跳过一些箍.

通常,该技术是将iframe中的上传发布到服务器上的IHttpHandler,该服务器将服务器上的进度存储在由客户端组成的标识符键入的服务器范围的字典中,并包括在AJAX进度请求和上载帖子中.这样,当客户端发出AJAX请求时,处理该请求的服务器代码可以读取该字典中的值,以查看服务器处理的文件POST请求的字节数.

是的,这很复杂:)


Eri*_*lje 7

我认为你的朋友是对的,文件被编码到发送到服务器的帖子中.如果您真的想确切了解其工作原理,请尝试在Firefox中使用Tamper Data查看实际的帖子数据.

ETA:

AJAX样式上传您通过在隐藏的iframe中执行帖子来提及工作,然后使用AJAX请求检查服务器端的上载进度.