好吧这可能看起来像一个noob问题,但我认识的许多Web开发人员都没有完全理解。
基本上,如何使用FileUpload控件的上传事件将文件从网页文件输入框上传到网络服务器(例如托管.net网站)?
我的理解是向服务器发出了一条请求流的帖子,然后将其传回浏览器并开始将数据流传输到服务器。
我的朋友说他的理解是整个文件被浏览器编码到帖子请求中,然后(大量)帖子被发送到服务器。
我认为情况可能并非如此,因为没有办法构建一个ajax进度条,因为服务器无法做任何事情,直到它收到整个帖子,到那时它也可以只需将文件保存到磁盘即可。
那么从浏览器到服务器的实际工作方式是什么?
答案 0 :(得分:9)
你的朋友是对的。如果你想要一个AJAX进度条,你必须跳过一些箍。
通常,技术是将iframe中的上传发布到服务器上的IHttpHandler,该服务器将服务器上的进度存储在服务器范围的字典中,该字典由客户端组成的标识符键入,并包含在AJAX进度请求和上传帖子。这样,当客户端发出AJAX请求时,处理该请求的服务器代码可以读取该字典中的值,以查看服务器处理的文件POST请求的字节数。
是的,这很复杂:)
答案 1 :(得分:7)
我认为你的朋友是对的,文件被编码到发送到服务器的帖子中。如果您确实想确切了解其工作原理,请尝试在Firefox中使用Tamper Data查看实际的帖子数据。
ETA:
通过在隐藏的iframe中执行帖子,然后使用AJAX请求检查服务器端的上载进度,AJAX样式上传您提及工作。