FileUpload控件使用初步:
1.實現文件上傳
protected void btnSubmit_click(object sender, EventArgs e)
{
if (FileUpload1.HasFile == true)
{
string strErr = "";
//獲得上傳文件的大小
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize > 1024 * 1024)
{
strErr += "文件大小不能大於 1MB\n";
}
if (strErr == "")
{
//獲得服務器文件當前路徑
string path = Server.MapPath("~");
//把上傳文件保存在當前路徑的 upload 文件夾中
FileUpload1.PostedFile.SaveAs(path + "\\upload\\" + FileUpload1.FileName);
lblInfo.Text = "文件保存成功";
}
}
else
{
lblInfo.Text = "請指定上傳的文件";
}
}
2. 限定上傳的文件的類型
//取得文件的擴展名,並轉換成小寫
string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
//限定只能上傳jpg和gif圖片
string[] allowExtension = { ".jpg", ".gif", ".txt", ".xls" };
//對上傳的文件的類型進行判斷
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
{
fileOk = true;
break;
}
}
可以進一步利用FileUpload.PostedFile.ContentType屬性進行文件類型判斷:
string fileContentType = FileUpload1.PostedFile.ContentType;
if (fileContentType =="image/bmp"|| fileContentType =="image/gif"|| fileContentType =="image/pjpeg")
{
//-----
}
3.將上傳文件的名稱以時間命名
string fileName = Server.MapPath("~") + "\\upload\\" + DateTime.Now.ToString("yyyyMMddHHmmss")+".jpg";
FileUpload1.SaveAs(fileName);
4.上傳大文件
利用ASP.NET控件中的FileUpload控件時,有時候需要上傳大容量的文件,可是默認情況下,上傳文件的最大容量為4M。如果要實現更大的文件上傳,可以在配置文件中改變兩個默認設置:httpRuntime下的maxRequestLength和requestLengthDiskThreshold,前者規定了上傳的最大容量值,后者設定緩存的大小,以KB為單位。
如:
<configuration>
<system.web>
...
<httpRuntime maxRequestLength=”10240" requestLengthDiskThreshold=”100" />
...
</system.web>
</configuration>
上面的設置為可以上傳不超過10MB的文件,並把緩存閾值改為100KB。
不過要注意,設置太大了會因用戶將大量文件傳遞到該服務器而導致的拒絕服務攻擊。