表單元素file設置隱藏,通過其他元素打開: .imgfile為input file JS部分: 一般處理程式部分: ...
表單元素file設置隱藏,通過其他元素打開:
.imgfile為input file
$(".ul").click(function () {return $(".imgfile").click(); });
JS部分:
$(".imgfile").change(function () { var file = $(".imgfile").get(0).files[0]; var reader = new FileReader(); reader.readAsDataURL(file); reader.onloadend = function () { $("#Image1").attr("src", reader.result); } }); $("#register2").click(function () {var IMG_BASE = $("#Image1").attr("src"); //要上傳的圖片的base64編碼 var IMG_ROUTE = $(".imgfile").val();//獲取上傳圖片路徑,為獲取圖片類型使用 var IMG_ENDFOUR = IMG_ROUTE.substr(IMG_ROUTE.length - 4, 4);//截取路徑後四位,判斷圖片類型 var IMG_FOMATE = "jpeg"; //圖片類型*** if (IMG_ENDFOUR.trim() == ".jpg") IMG_FOMATE = "jpg"; else if (IMG_ENDFOUR.trim() == ".png") IMG_FOMATE = "png"; else if (IMG_ENDFOUR.trim() == ".bmp") IMG_FOMATE = "bmp"; //圖片正式開始上傳 $.ajax({ type: "post", url: "server/head.ashx", data: { 'imgBase': IMG_BASE, 'imgFormat': IMG_FOMATE }, dataType: "text", success: function (data) { //data為返回的圖片路徑 }); });
一般處理程式部分:
using System.IO; //需要這三個命名空間 using System.Drawing;//*** using System.Drawing.Imaging;//*** string imgBase = context.Request["imgBase"];//傳遞過來的base64編碼 string imgFomate = context.Request["imgFormat"];//傳遞過來的圖片格式 string end = "1"; string imgReadyBase = imgBase.Substring(imgBase.IndexOf("4") + 2);//截取base64編碼無用開頭 byte[] bytes = System.Convert.FromBase64String(imgReadyBase);//base64轉為byte數組 MemoryStream ms = new MemoryStream(bytes);//創建記憶體流,將圖片編碼導入 Image img = Image.FromStream(ms);//將流中的圖片轉換為Image圖片對象 //利用時間種子解決偽隨機數短時間重覆問題 Random ran = new Random((int)DateTime.Now.Ticks); //文件保存位置及命名,精確到毫秒並附帶一組隨機數,防止文件重名,資料庫保存路徑為此變數 string s = ran.Next().ToString(); string serverPath = "../head/" + DateTime.Now.ToString("yyyyMMddhhmmssms") +s+ "." + imgFomate; //路徑映射為絕對路徑 string path = context.Server.MapPath(serverPath); ImageFormat imgfor = ImageFormat.Jpeg;//設置圖片格式 if (imgFomate == "png") imgfor = ImageFormat.Png; try { img.Save(path, imgfor);//圖片保存 } catch { end = "0"; } end = "head/" + DateTime.Now.ToString("yyyyMMddhhmmssms") +s+ "." + imgFomate; context.Response.Write(end); context.Response.End();