好吧,这可能看起来有点新手的问题,但我认识的许多Web开发人员对此并不完全了解。
基本上,如何通过FileUpload控件的上传事件将文件从网页文件输入框上传到web服务器(例如托管.net站点)?
我的理解是,向服务器发送了一个请求流的post,然后将其传递回浏览器,并开始将数据流式传输到服务器。
我的朋友说,他的理解是,浏览器将整个文件编码到post请求中,然后将(大量) post发送到服务器。
我认为情况不会是这样的,因为在收到完整的帖子之前,服务器将无法执行任何操作,因此无法构建ajax进度条,而在收到整个帖子之前,服务器可能只需将文件保存到磁盘。
那么它实际上是如何在浏览器和服务器之间工作的呢?
发布于 2009-06-24 15:46:22
你的朋友是对的。如果您想要一个AJAX进度条,您必须经历一些困难。
通常,技术是将iframe中的上载发送到服务器上的IHttpHandler,该服务器将进度存储在服务器范围的字典中,该字典由客户端组成的标识符组成,并包含在AJAX进度请求和上载post中。这样,当客户机发出AJAX请求时,处理该请求的服务器代码可以从该字典中读取该值,以查看服务器已经处理了多少字节的文件POST请求。
是的,这很复杂:)
发布于 2009-06-24 15:40:48
我认为你的朋友是对的,文件被编码到发送到服务器的帖子中。如果你真的想知道它是如何工作的,可以尝试在火狐中使用Tamper Data来查看实际的post数据。
预计到达时间:
AJAX风格通过在隐藏的iframe中执行post,然后使用AJAX请求在服务器端检查上传进度来上传您提到的工作。
https://stackoverflow.com/questions/1039148
复制相似问题