用到FileLoad控制項:
<asp:FileUpload ID="FileUpload1" runat="server" Width="217px" />//FileLoad控制項
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="上傳" />上傳按鈕
後台代碼:
protected void Button1_Click(object sender, EventArgs e) { try { if (FileUpload1.PostedFile.FileName == "") { alert("請選擇檔案!"); } else { string filepath = FileUpload1.PostedFile.FileName; //if (!IsAllowedExtension(FileUpload1)) //{ // this.lb_info.Text = "上傳檔案格式不正確!"; //} if (IsAllowedExtension(FileUpload1) == true) { string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1); filename = Session["StuID"].ToString()+".jpg"; string serverpath = Server.MapPath("~/examer_images/") + filename; FileUpload1.PostedFile.SaveAs(serverpath); if (isProperSize(serverpath)) { alert("映像上傳成功!"); } } else { alert("請上傳圖片!"); } } } catch (Exception ex) { alert("上傳發生錯誤!原因:" + ex.ToString()); } }
判斷檔案是否為影像檔:
private bool IsAllowedExtension(FileUpload upfile) { string strOldFilePath = ""; string strExtension = ""; string[] arrExtension = { ".gif", ".jpg", ".bmp", ".png" }; if (upfile.PostedFile.FileName != string.Empty) { strOldFilePath = upfile.PostedFile.FileName;//獲得檔案的完整路徑名 strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));//獲得檔案的副檔名,如:.jpg for (int i = 0; i < arrExtension.Length; i++) { if (strExtension.Equals(arrExtension[i])) { return true; } } } return false; }
判斷映像是否符合規格:
private bool isProperSize(string filename) { System.Drawing.Image image2 = System.Drawing.Image.FromFile(filename); if ((image2.Width > 441) && (image2.Height > 358)) { image2.Dispose(); Response.Write("<script language='javascript'>alert('寬度和高度大於520*520px!')</script>"); System.IO.File.Delete(filename);//刪除檔案 return false; } else return true; }
總結:
擷取所選擇的映像名稱:string filepath = FileUpload1.PostedFile.FileName;
擷取所要上傳的目錄名稱:string serverpath = Server.MapPath("~/examer_images/") + filename;//本程式檔案夾上一級目錄
Server擷取路徑規則如下:
1、Server.MapPath("/")
註:獲得應用程式根目錄所在的位置,如 C:\Inetpub\wwwroot\。
2、Server.MapPath("./")
註:獲得所在頁面的目前的目錄,等價於Server.MapPath("")。
3、Server.MapPath("../")
註:獲得所在頁面的上級目錄。
4、Server.MapPath("~/")
註:獲得當前應用級程式的目錄,如果是根目錄,就是根目錄,如果是虛擬目錄,就是虛擬目錄所在的位置,如C:\Inetpub\wwwroot\Example\。
eg:
string filename=Server.MapPath("./") + @"\Web.config";
string filename=Server.MapPath("./") + "/Web.config";
string filename=Server.MapPath("") + @"\Web.config"
System.IO.File.Delete(filename);//刪除檔案