如果在页面上放置 asp:FileUpload 控件,请浏览到某个文件,然后提交该窗体。 提交表单时,文件是否已上传到服务器?
我已经看到了很多文件上传的例子,其中文件被传递到文件流并上传。
我不明白什么时候发生了什么。单击"上传"按钮后,代码将在服务器上执行。所以文件(文件名?文件路径?)由FileUpload控件使用FileUpload.PostedFile(或httpFileCollection)提供...这是在提交表单时上传的吗?服务器如何访问客户端计算机上的文件,以便可以使用文件流上载该文件。
我不明白。我一直在读到文件流以块的形式传递(可以传递)数据 - 帮助绕过文件大小等限制,但是,正如我上面所说,文件何时/如何上传到服务器?
<asp:FileUpload>
控件呈现一个<input type="file">
,并将表单的内容类型设置为 multipart/form-data
。
当浏览器提交带有<input type="file">
的<form>
时,它会将整个文件发送到HTTP POST中的服务器(这是内容类型的一部分)。
单击上载时,将提交 html 表单,并向服务器发送发布请求。
它实际上不会向您发送可以直接存储的某种"文件"对象,只是以字节为单位的文件内容和一些元数据,例如文件名。
在服务器上,您必须处理此请求:您必须将字节读入实际文件才能正确存储它。
在您提到的示例中,这就是 HttpPostedFile 的用途。