C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含11591字,纯文字阅读大概需要17分钟。
内容图文
![C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取](/upload/InfoBanner/zyjiaocheng/1316/c484e4732abc485a8ba4db86c18dd787.jpg)
状况描述:
需要上传文件,但是不想要保存到实体路径下,便可以用该功能来实现。
效果图:
点击【Upload】按钮,上传文件到数据库;
点击【Preview】,预览文件;
具体实现:
前台:
![技术分享](/upload/getfiles/default/2022/11/4/20221104040237070.jpg)
![技术分享](/img/jian.gif)
1 <tr> 2 <td class="subject" nowrap="nowrap" align="right" style="width: 180px; text-align: right;"><%=Resources.WebResource.OE_ID_TYPE%> 3 <!--ID Type--> 4 : 5 </td> 6 <td style="color: #F90;"> 7 <asp:DropDownList ID="drpIDType_N" runat="server" style="width: 25%;" OnSelectedIndexChanged="drpIDType_N_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList> 8 <span style="color: Red;">*</span> 9 <asp:FileUpload ID="btnFile" runat="server" Style="width: 25%;" /> 1011 <input type="button" id="btnUpload" runat="server" value=‘<%$ Resources:WebResource,CC_UPLOAD%>‘ onserverclick="btnUpload_Click" Visible="true" style="height:inherit; text-align: center;color: #b44c00;font-weight: 700;background-color: #ffe926;" /> 12 <a href="Javascript: void(0)" id="lnkShowImg" runat="server" title="<%$ Resources:WebResource,IMG_PREVIEW_TITLE%>" visible="false" style="width:15%"><%=Resources.WebResource.IMG_PREVIEW%></a> 13 </td> 14 </tr> 15 <tr> 16 <td class="subject" nowrap="nowrap" align="right" style="width: 180px; text-align: right;"><%=Resources.WebResource.OE_ID_NO%> 17 <!--ID No--> 18 : 19 </td> 20 <td class="name"> 21 <input type="text" runat="server" id="txtIDNO_N" maxlength="50" style="width: 96.6%;" /> 22 <span style="color: Red">*</span> 23 </td> 24 </tr>
后台:
![技术分享](/upload/getfiles/default/2022/11/4/20221104040237070.jpg)
![技术分享](/img/jian.gif)
1 protected void btnUpload_Click(object sender, EventArgs e) 2{ 3try 4 { 5 UploadImg(this.btnFile, this.txtEmployeeID, this.txtDEPID); 6 } 7catch (Exception ex) 8 { 9 ShowError("W99999", "J00006", o_PopupWin, this.mLanguage); 10 WriteLog(ex.ToString()); 11 WriteLog("Browser:" + HttpContext.Current.Request.Browser.Browser); 12 } 13} 14 15privatevoid UploadImg(FileUpload file, string s_EmployeeID, string s_DEPID) 16{ 17//验证文件类型 18 Boolean fileOK = false; 19 String fileExtension; 20if (file.HasFile) //判断是否有图片上来了 21 { 22 fileExtension = System.IO.Path.GetExtension(file.FileName.Trim()).ToLower();//获取文件扩展名 23 String[] allowedExtensions = { ".jpg", ".png", ".jpeg" }; //允许上传的文件格式 24for (int i = 0; i < allowedExtensions.Length; i++) 25 { 26if (fileExtension == allowedExtensions[i]) 27 { 28 fileOK = true; 29break; 30 } 31 } 32 } 33else 34 { 35 Response.Write("<script>alert(‘进行提示‘);</script>"); 36return; 37 } 38if (!fileOK) 39 { 40 Response.Write("<script>alert(‘进行提示‘);</script>"); 41return; 42 } 43 44#region 因浏览器兼容问题,会取不到文件完整路径,所以先将文件保存到本地 45string strFileLocalPath = Server.MapPath("../../Upload//Tmp//"); 46string strFileName = strFileLocalPath + DateTime.Now.ToString("yyyyMMddHHmmss") + fileExtension; 47if (Directory.Exists(strFileLocalPath) == false) 48 { 49 Directory.CreateDirectory(strFileLocalPath); 50 } 51if (file.PostedFile.FileName.Trim() != "") 52 { 53 file.PostedFile.SaveAs(strFileName); 54 WriteLog("Browser:" + HttpContext.Current.Request.Browser.Browser); 55 } 56#endregion 57 58//将文件读进二进制内存 59byte[] photo = Utility.getImg(strFileName, true); 60 61//插入数据库 62 o_CC_Insured_BLL.insertOrUpdateCCImg(fileExtension, System.IO.Path.GetFileName(file.PostedFile.FileName), photo); 63 64//给【Preview】赋JS事件 65 setShowImgLink(s_EmployeeID, s_DEPID); 66 67//提示上传成功 68 ShowOk("W00058", "J00005", o_PopupWin, this.mLanguage); 69} 70 71///<summary> 72/// 从数据库里面查询已上传的文件 73///</summary> 74///<param name="filePath"></param> 75///<returns></returns> 76privatevoid setShowImgLink(string s_EmployeeID, string s_DEPID) 77{ 78 DataTable dtimg = new DataTable(); 79 80 dtimg = o_CC_Insured_BLL.getUploadFileCC(s_EmployeeID, s_DEPID); 81if (dtimg.Rows.Count > 0) 82 { 83 lnkShowImg.Attributes.Add("onclick", "funOpenShowImage(‘" + s_EmployeeID + "‘,‘" + s_DEPID + "‘);"); 84 lnkShowImg.Visible = true; 85 } 86else 87 { 88 lnkShowImg.Visible = false; 89 } 90} 91 92///<summary> 93/// 将图片文件写入二进制对象 94///</summary> 95///<param name="filePath"></param> 96///<returns></returns> 97publicstaticbyte[] getImg(string filePath, bool deleteFlg) 98{ 99//读取图片100 FileStream fs = new System.IO.FileStream(filePath, FileMode.Open, FileAccess.Read); 101 BinaryReader br = new BinaryReader(fs); 102byte[] photo; 103try104 { 105 photo = br.ReadBytes((int)fs.Length); 106 } 107finally108 { 109 br.Close(); 110 fs.Close(); 111 } 112//删除文件113if (deleteFlg) 114 { 115//删除图片文件116if (File.Exists(filePath)) 117 { 118 File.Delete(filePath); 119 } 120 } 121return photo; 122 }
JS:
![技术分享](/upload/getfiles/default/2022/11/4/20221104040237070.jpg)
![技术分享](/img/jian.gif)
1 function funOpenShowImage(s_EmployeeID, s_DEPID) { 2 var strUrl = "../showUploadImg.aspx"; 3if (document.all)//IE浏览器 4 { 5var strParm = s_EmployeeID + "," + s_DEPID 6 openNewWin_IE(strUrl, strParm, 850, 630, "newwin"); 7 } 8elseif ((/Trident\/7\./).test(navigator.userAgent))//IE11浏览器 9 { 10var strParm = s_EmployeeID + "," + s_DEPID 11 openNewWin_IE11(strUrl, strParm, 850, 630, "newwin"); 12 } 13else//其他浏览器14 { 15var aryParm = [["EmployeeID", s_EmployeeID], ["DEPID", s_DEPID]]; 16 OpenNewWin(strUrl, aryParm, 850, 630, "newwin"); 17 } 18 }
预览需要新建一个页面:
新建showUploadImg.aspx
前台:
添加Img控件
1 <div> 2 <img runat="server" id="imgShow" src="\Upload\TMP\aaa.jpg" /> 3 </div>
后台:
![技术分享](/upload/getfiles/default/2022/11/4/20221104040237070.jpg)
![技术分享](/img/jian.gif)
1 protected void Page_Load(object sender, EventArgs e) 2{ 3try 4 { 5 clearTmp(Server.MapPath("../Upload/TMP/")); 6//setInsured(); 7//saveImg(); 8 9string _EmployeeID = string.Empty; 10string _DepID = string.Empty; 11string strParm = this.Request.Form.Get("param") == null ? "" : Server.HtmlDecode(this.Request.Form.Get("param")); 12if (string.IsNullOrEmpty(strParm)) 13 { 14 _EmployeeID = this.Request.Form.Get("EmployeeID") == null ? "" : Server.HtmlDecode(this.Request.Form.Get("EmployeeID")); 15 _DepID = this.Request.Form.Get("DEPID") == null ? "" : Server.HtmlDecode(this.Request.Form.Get("DEPID")); 16 } 17else18 { 19string[] arrParm = strParm.Split(‘,‘); 20 _EmployeeID = arrParm[0] == null ? "" : arrParm[0]; 21 _DepID = arrParm[1] == null ? "" : arrParm[1]; 22 } 2324//从数据库读取文件25 DataTable dtImg = new DataTable(); 26 dtImg = o_CC_Insured_Bll.getUploadFileCC(_EmployeeID, _DepID); 2728string strFileName = _EmployeeID + DateTime.Now.ToString("yyyyMMddhhmmss") + ".JPG"; 29string strPhotoPath = "../Upload/TMP/"; 30string strFullPhotoPath = Server.MapPath(strPhotoPath) + strFileName; 31if (dtImg.Rows.Count > 0 && dtImg.Rows[0]["ImgFile"] != DBNull.Value) 32 { 33if (Directory.Exists(Server.MapPath(strPhotoPath)) == false) 34 { 35 Directory.CreateDirectory(Server.MapPath(strPhotoPath)); 36 } 37string setImgResult = setImg((byte[])dtImg.Rows[0]["ImgFile"], strFullPhotoPath); 38if (string.IsNullOrEmpty(setImgResult)) 39 { 40 imgShow.Src = strPhotoPath + strFileName; 41 } 42 } 43 } 44catch45 { 46 ShowError("W99999", "J00006", o_PopupWin, this.mLanguage); 47 } 48} 495051///<summary>52/// 清空文件夹下的内容 53///</summary>54///<param name="folderPath"></param>55publicstaticvoid clearTmp(string folderPath) 56{ 57//判斷是否有這樣的路徑58if (System.IO.Directory.Exists(folderPath) == true) 59 { 60 DirectoryInfo theFolder = new DirectoryInfo(folderPath); 61 FileInfo[] fileInfo = theFolder.GetFiles(); 62foreach (FileInfo NextFile in fileInfo) //遍历文件63 { 64try65 { 66 File.Delete(NextFile.FullName); 67 } 68catch { } 69 } 70 } 71} 72///<summary>73/// 读取图片文件到指定目录 74///</summary>75///<param name="img"></param>76///<param name="filePath"></param>77///<returns></returns>78publicstaticstring setImg(byte[] img, string filePath) 79{ 80try81 { 82 BinaryWriter bw = new BinaryWriter(File.Open(filePath, FileMode.OpenOrCreate)); 83 bw.Write(img); 84 bw.Close(); 85return""; 86 } 87catch (Exception ex) 88 { 89return ex.ToString(); 90 } 91 }
JS开启新窗口的共用方法:
![技术分享](/upload/getfiles/default/2022/11/4/20221104040237070.jpg)
![技术分享](/img/jian.gif)
1 // 目的:提供開啟視窗的畫面 2 // 參數:strUrl-->欲開啟畫面的網址,strParms-->參數,width-->畫面的寬度,height-->畫面的高度 3 // WinName-->開啟的視窗名稱 4 // xx. YYYY/MM/DD VER AUTHOR COMMENTS 5 // 1. 2016/08/22 1.00 Anne Create 6 function OpenNewWin(strUrl,aryParms,width,height,WinName) 7 { 8 var top=0; 9var left=0; 10if (height ==‘‘ && width==‘‘){ 11 width=screen.availWidth; 12 height=screen.availHeight; 13 }elseif (height >screen.availHeight && width>screen.availWidth){ 14 width=screen.availWidth; 15 height=screen.availHeight; 16 }else{ 17 top=(screen.availHeight-height)/2; 18 left=(screen.availWidth-width)/2; 19 } 20var newWindow = window.open("",WinName,‘width=‘+width+‘px,height=‘+height+‘px,dependent,left=‘+left+‘,top=‘+top+‘,status=no,toolbar=false,menubar=no,scrollbars=yes,resizable=yes‘,true); 21if (!newWindow) returnfalse; 2223var html =""; 24//參數的處理 25//var aryParm=strParms.split("&");//有多少個參數26var i=0; 27for(i=0;i<aryParms.length;i++) 28 { 29//var aryParaTemp = aryParm[i].split("=");//每一個參數30var aryParaTemp = aryParms[i]; 31 html += "<input type=‘hidden‘ name=‘" + aryParaTemp[0] + "‘ value=‘" + aryParaTemp[1] + "‘/>";//參數字段32 } 33 html = "<html><head></head><body><form id=‘formid‘ method=‘post‘ action=‘"+strUrl+"‘>"+html; 34 html += "</form><scr"+"ipt type=‘text/javascript‘>document.getElementById(‘formid‘).submit()</scr"+"ipt></body></html>"; 35//html += "</form><script type=‘text/javascript‘>document.getElementById(‘formid‘).submit()</script></body></html>";36 newWindow.document.write(html);//提交post數據37} 3839//目的:提供開啟視窗的畫面(跨域跳转的话,用OpenNewWin方法,IE浏览器不兼容,故重写一个) 40//參數:strUrl-->欲開啟畫面的網址,strParms-->參數,width-->畫面的寬度,height-->畫面的高度 41// WinName-->開啟的視窗名稱 42function openNewWin_IE(strUrl,strParam,width,height,name) 43{ 44var tempForm = document.createElement("form"); 45 tempForm.id="tempForm1"; 46 tempForm.method="post"; 47 tempForm.action=strUrl; 48 tempForm.target=name; 49var hideInput = document.createElement("input"); 50 hideInput.type="hidden"; 51 hideInput.name= "param"52 hideInput.value= strParam; 53 tempForm.appendChild(hideInput); 54 tempForm.attachEvent("onsubmit",function(){funWinOpen("",width,height,name);}); 55 document.body.appendChild(tempForm); 56 tempForm.fireEvent("onsubmit"); 57 tempForm.submit(); 58 document.body.removeChild(tempForm); 59} 60function openNewWin_IE11(strUrl,strParam,width,height,name) 61{ 62var tempForm = document.createElement("form"); 63 tempForm.id="tempForm1"; 64 tempForm.method="post"; 65 tempForm.action=strUrl; 66 tempForm.target=name; 67var hideInput = document.createElement("input"); 68 hideInput.type="hidden"; 69 hideInput.name= "param"70 hideInput.value= strParam; 71 tempForm.appendChild(hideInput); 72 tempForm.addEventListener("onsubmit",function(){funWinOpen("",width,height,name);}); 73 document.body.appendChild(tempForm); 74 tempForm.submit(); 75 document.body.removeChild(tempForm); 76} 77function funWinOpen(strUrl,width,height,WinName) 78{ 79var top=0; 80var left=0; 81if (height ==‘‘ && width==‘‘){ 82 width=screen.availWidth; 83 height=screen.availHeight; 84 }elseif (height >screen.availHeight && width>screen.availWidth){ 85 width=screen.availWidth; 86 height=screen.availHeight; 87 }else{ 88 top=(screen.availHeight-height)/2; 89 left=(screen.availWidth-width)/2; 90 } 91var newWindow = window.open(strUrl,WinName,‘width=‘+width+‘px,height=‘+height+‘px,dependent,left=‘+left+‘,top=‘+top+‘,status=no,toolbar=false,menubar=no,scrollbars=yes,resizable=yes‘,true); 92 }
预览效果图:
原文:http://www.cnblogs.com/AnneHan/p/7646966.html
内容总结
以上是互联网集市为您收集整理的C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取全部内容,希望文章能够帮你解决C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。