【ASP】FileUpload上傳圖片並儲存資料庫
阿新 • • 發佈:2018-12-13
介面簡單粗糙,將就將就,程式碼複製過去應該可以直接用
前臺程式碼就這點:
<div class="Upload">
<asp:FileUpload ID="FileUpload" runat="server" />
</div>
<asp:Button ID="btnSave" runat="server" Text="儲存" OnClick="btnSave_Click" />
接下來是後臺,首先確定明確一下我們的邏輯關係:簡單點說,觸發“儲存”的點選事件時,第一是把圖片放到伺服器的指定位置,第二是把圖片的位置(路徑)存入到資料庫中…`
上傳圖片的方法(“儲存”的點選事件時觸發時呼叫該方法)
//上傳圖片 返回是否儲存成功 儲存的路徑 縮圖路徑 public bool Upload(ref string imgSavePath, ref string vimgSavePath) `這裡寫程式碼片`{ //獲取上傳的檔名 string fileName = this.FileUpload.FileName; fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + fileName; string route ="http://192.168.2.168:8006";//你的伺服器地址 //如果伺服器不存在該名資料夾 就生成一個 if (!Directory.Exists(route + "Images/")) { Directory.CreateDirectory(route + "Images/"); } //獲取物理路徑(圖片儲存的位置) String path = Server.MapPath("~/Images/"); //判斷上傳控制元件是否上傳檔案 if (FileUpload.HasFile) { //判斷上傳檔案的副檔名是否為允許的副檔名".gif", ".png", ".jpeg", ".jpg" ,".bmp" String fileExtension = System.IO.Path.GetExtension(fileName).ToLower(); String[] Extensions = { ".gif", ".png", ".jpeg", ".jpg", ".bmp" }; for (int i = 0; i < Extensions.Length; i++) { if (fileExtension == Extensions[i]) { //進行上傳圖片操作 this.FileUpload.PostedFile.SaveAs(path + fileName); imgSavePath = path + fileName;//原圖儲存路徑 vimgSavePath = path + "th_" + fileName;//縮圖儲存路徑 imgsize(imgSavePath, vimgSavePath);//生成縮圖 return true; } } } return false; }
生成縮圖的方法(圖片上傳成功呼叫該方法)
public void imgsize(string imgSavePath, string vimgSavePath) { //本例中假定了兩個變數: String src = imgSavePath;//源影象檔案的絕對路徑 String dest = vimgSavePath; //生成的縮圖影象檔案的絕對路徑 int thumbWidth = 100; //要生成的縮圖的寬度 int thumbHeight = 100; //要生成的縮圖的高度 System.Drawing.Image image = System.Drawing.Image.FromFile(src); //利用Image物件裝載源影象 //接著建立一個System.Drawing.Bitmap物件,並設定你希望的縮圖的寬度和高度。 int srcWidth = image.Width; int srcHeight = image.Height; Bitmap bmp = new Bitmap(thumbWidth, thumbHeight); //從Bitmap建立一個System.Drawing.Graphics物件,用來繪製高質量的縮小圖。 System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp); //設定 System.Drawing.Graphics物件的SmoothingMode屬性為HighQuality gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //下面這個也設成高質量 gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //下面這個設成High gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //把原始影象繪製成上面所設定寬高的縮小圖 System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, thumbWidth, thumbHeight); gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel); //儲存影象,大功告成! bmp.Save(dest); //最後別忘了釋放資源 bmp.Dispose(); image.Dispose(); }
最後上“儲存”的觸發程式碼
//儲存上傳的圖片到資料庫
protected void btnSave_Click(object sender, EventArgs e)
{
var imgSavePath = "";//儲存圖片路徑
var vimgSavePath = "";//縮圖路徑
var result = Upload(ref imgSavePath, ref vimgSavePath);
if (result)
{
//圖片上傳完成 進行寫資料庫操作
Response.Write("<script>alert('已儲存')</script>");
this.labImg.Text = "原圖儲存路徑:" + imgSavePath;
this.labVimg.Text = "縮圖儲存路徑:" + vimgSavePath;
}
}
存資料庫不用我說了吧
後記:不足之處請大家見諒,希望通過相互間交流來完善彼此這裡寫程式碼片