//判断上传文件是否是图片 private static 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 ; } //图片上传并将图片重命名 protected void FileUpload_Button_Click( object sender, EventArgs e) { try { if (FileUpload1.HasFile) { if (IsAllowedExtension(FileUpload1)) { string filepath = FileUpload1.FileName; //string filename = filepath.Substring(filepath.LastIndexOf('\\') + 1, filepath.Length - filepath.LastIndexOf('\\') - 1);//(filepath.LastIndexOf("\\") + 1); //以年-月-日-时-分-秒-毫米将图片重新命名 string filename = DateTime.Now.ToString( "yyyy-MM-dd-hh-mm-ss-fffffff" )+filepath.Substring(filepath.LastIndexOf( '.' ), filepath.Length - filepath.LastIndexOf( '.' )); //设定上传路径(绝对路径) string uppath = Server.MapPath( "~/Photo/" ) + filename; //图片上传至绝对路径 FileUpload1.PostedFile.SaveAs(uppath); //设定数据库的存储路径 string savepath= "~\\Photo\\" +filename; HiddenField1.Value = savepath; lblInfo.Text = "上传成功!" ; } } else { lblInfo.Text = "请选择上传文件" ; } } catch (Exception ex) { lblInfo.Text = "上传发生错误!原因是:" + ex.ToString(); } } <br> <br> |
前台放三个控件
前台代码:
<asp:FileUpload ID= "FileUpload1" runat= "server" Font-Size= "13px" BorderColor= "Gray" BorderStyle= "Solid" BorderWidth= "1px" Height= "25px" Width= "400px" /> <asp:Button ID= "FileUpload_Button" runat= "server" Text= "上传图片" Height= "25px" CausesValidation= "False" onclick= "FileUpload_Button_Click" /> <asp:Label id= "lblInfo" runat= "server" ForeColor= "Red" Font-Size= "13px" ></asp:Label> |
注:
1、FileUpload 控件不能放在UpdatePanel控件内,如果放在UpdatePanel内FileUpload1.HasFile始终为false
2、在给insert语句填充数据时,要使用cmd.Parameters.AddWithValue("@b", savepath);的格式防止字符串savepath中的'\'转义,若使用string sql=string.Format("insert into table1(path) values('{0}')",savepath);的格式,存入数据库的图片路径将会没有'\'。
3、若在图片上传的页面中有验证控件,且不想在单击图片上传按钮的过程中进行验证,需要加上CausesValidation="False"属性。
更多图片上传问题参考:http://leonardleonard.iteye.com/blog/276213
分类:
ASP.NET
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构