一般處理程序由于沒有 apsx 頁面的整個模型和控件的創(chuàng)建周期,而比較有效率。這里寫一個用 html 表單進行文件上傳的示例。
1. 表單元素選用 <input type="file"> 控件。
2. form 表單需要設置 enctype="multipart/form-data" 屬性,請求報文體中數據格式也由鍵值對更改為數據頭和數具體,并有隨機邊界符分割。
3. 服務器端接收文件使用 Request.Files 屬性。
4. 使用 HttpPostedFile 的 SaveAs 方法保存文件(需轉換成網站物理路徑)。
<body>
<form action="UploadFile.ashx" method="post" enctype="multipart/form-data">
<input type="file" name="fileUpload" />
<input type="submit" value="上傳文件" />
</form>
</body>
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
HttpServerUtility server = context.Server;
HttpRequest request = context.Request;
HttpResponse response = context.Response;
HttpPostedFile file = context.Request.Files[0];
if (file.ContentLength > 0)
{
string extName = Path.GetExtension(file.FileName);
string fileName = Guid.NewGuid().ToString();
string fullName = fileName + extName;
string imageFilter = ".jpg|.png|.gif|.ico";// 隨便模擬幾個圖片類型
if (imageFilter.Contains(extName.ToLower()))
{
string phyFilePath = server.MapPath("~/Upload/Image/") + fullName;
file.SaveAs(phyFilePath);
response.Write("上傳成功!文件名:" + fullName + "<br />");
response.Write(string.Format("<img src='Upload/Image/{0}'/>", fullName));
}
}
}