文件上传功能在客户端的部分,用单纯的HTML实现的话,代码如下:
1 <html>
2 <head>
3 <title>
4 this is a test page for file upload!
5 </title>
6 </head>
7 <body>
8 <form enctype="multipart/form-data">
9 <input type="file"/>
10 <input type="submit" value="upload"/>
11 </form>
12 </body>
13 </html>
当点击按钮的时候,FORM就会被回送的服务器端,
(在这背后,浏览器与HTTP协议,或者TCP/IP之间发生了什么事情?然后客户端跟SERVER端之间又发生了什么事情?)这部分好像追问得过于底层了。
这个FORM被回送后,SERVER端倒底得到了什么?又如何建立连接,得到真实的上传文件数据呢?
这一部分的话,应该是取决于各个不同的SERVER端,不同的SERVER端编程语言的实现方式了。
ASP.NET中,关于文件上传,有一个asp:FileUpload控件,今天我的目标,就是要搞清楚这个控件的用法,
这个控件在接收到文件后,可以把文件保存在文件系统或者数据库中。
关键代码为:
ASPX页面上的一个控件,加一个表单提交的BUTTON,如下:
<asp:FileUpload ID="fuTest" runat="server" />
<asp:Button ID="btUpload" runat="server" Text="Upload" OnClick="btUpload_Click" />
然后这个BUTTON的按下响应函数如下:
protected void btUpload_Click(object sender, EventArgs e)
{
if (fuTest.HasFile)
{
String filePath = "~/UploadFiles/" + fuTest.FileName;
fuTest.SaveAs(MapPath(filePath));
}
}
这样子,就实现了,将一个文件上传到SERVER端的功能。至于如何保存到数据库中,如何控制不同的上传文件类型,这个以后再补充。