.net 服务器控件实现文件上传
来源:互联网 发布:淘宝网伴娘礼服 编辑:程序博客网 时间:2024/05/01 10:50
最近在做项目的时候,需要上传文件,包括图片和视频,网上找了很多方法,最后选了一种比较适合需要的。主要使用的是一种服务器控件,FileUpload。
1.在页面上拉过啦FileUpload控件,设置一个上传按钮。
<span style="font-family:KaiTi_GB2312;font-size:18px;"> <asp:FileUpload ID="FileUpload1" runat="server" /> //上传控件 <asp:Button ID="FileUpload " runat="server" Text="上传" OnClientClick="checkform()" OnClick ="FileUpload _Click"/> //上传按钮</span>
2.前台js验证
<span style="font-family:KaiTi_GB2312;font-size:18px;"> function checkform() { var strs = document.getElementById("FileUpload1").value; if (strs == "") { alert("请选择要上传的图片!"); return false; } var n1 = strs.lastIndexOf('.') + 1; var fileExt = strs.substring(n1, n1 + 3).toLowerCase() if (fileExt != "jpg" && fileExt != "bmp" && fileExt != "png" && fileExt != "avi") { alert('目前系统仅支持jpg、bmp、png后缀图片上传!'); return false; } }</span>
在上面的代码中有一个OnClientClick(),刚开始在前台js中写了代码,但是就是不走js代码,一直感觉没有问题啊。后来经过查询和寻求帮助,才知道,我们写的应该是OnClientClick,不应该是Click,两者有什么区别呢?OnClientClick是客户端脚本,一般使用javascript,在客户端,也就是IE中运行,点击后马上执行。OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS中运行,点击按钮后,执行postback,之后再运行。
3.后台Click事件代码。
因为内容嵌套比较多,所以可以先看一下真个代码的思路,特别清晰。
下面是具体的代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;"> protected void Button1_Click(object sender, EventArgs e) { #region 文件不存在,创建文件夹 if (!System.IO.Directory.Exists(Server.MapPath(upPath))) { //不存在,创建文件 System.IO.Directory.CreateDirectory(Server.MapPath(upPath)); } if (FileUpload1.FileName == "") { ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('请选择你要上传的文件!');</script>"); } #endregion if (FileUpload1.HasFile) { #region 获取文件类型,设置可容文件大小 int upLength = 8; //上传文件大小 System.IO.FileInfo fi = new System.IO.FileInfo(FileUpload1.FileName); string fileContentType = FileUpload1.PostedFile.ContentType; //文件类型 #endregion //设置可以上传文件的类型,自己根据需要设置 if (fi.Extension.ToLower() == ".avi" || fi.Extension.ToLower() == ".gif" || fi.Extension.ToLower() == ".flv" || fi.Extension.ToLower() == ".mp4" || fi.Extension.ToLower() == ".jpg" || fi.Extension.ToLower() == ".bmp" || fi.Extension.ToLower() == ".JPEG" || fi.Extension.ToLower() == ".png") { #region 获取路径,根据条件给文件重新命名 string name = FileUpload1.PostedFile.FileName; // 客户端文件路径 System.IO.FileInfo file = new System.IO.FileInfo(name); //去掉IP中间的点号 string str = txtIP.Text; string result = str.Replace(".", ""); //生成新的文件夹:IP+时间+文件格式 string fileName = result + DateTime.Now.ToString("yyyyMMddhhmmssfff") + file.Extension; // 文件名称,当前时间(yyyyMMddhhmmssfff) string webFilePath = Server.MapPath(upPath) + fileName; // 服务器端文件路径 string FilePath = upPath + fileName; //页面中使用的路径 #endregion if (!System.IO.File.Exists(webFilePath)) { #region 文件大小是否超过限制 if ((FileUpload1.FileBytes.Length / (1024 * 1024)) > upLength) { ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('大小超出 " + upLength + " M的限制,请处理后再上传!');", true); // return "null"; } #endregion #region try 判断是否上传成功 try { FileUpload1.SaveAs(webFilePath); // 用 SaveAs 方法保存文件 ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件上传成功');", true); //获取文件路径,显示在文件名称文本框中 txtPictureName.Text = upPath+fileName; } catch (Exception ex) { ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件上传失败" + ex.Message + "');", true); } #endregion } else { #region 判断文件是否已经存在 ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件已经存在,请重命名后上传');", true); } #endregion } else { #region 判断文件类型是否相符 ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件类型不符');", true); #endregion } } }</span>
通过以上的代码就可以成功实现文件上传的功能了。可以上传图片、文档、相关设置的视频,类型可以通过自己的设置。
0 0
- .net 服务器控件实现文件上传
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)
- SlickUploadFile控件 实现asp.net文件上传
- ASP.NET实现文件上传控件
- ASP.NET实现上传文件到服务器
- ASP.NET非服务器控件上传与服务器控件上传文件功能
- 使用input代替服务器控件FileUpload实现文件上传
- ASP.Net文件上传研究开篇之—— 不使用服务器控件的文件上传
- 使用NeatUpload控件实现ASP.NET大文件上传
- .net大文件上传控件
- 【转】.Net 文件上传控件
- FileUpload控件实现上传文件
- GooUploader 控件实现上传文件
- asp.net 使用纯jquery上传控件 fineuploader实现多文件上传
- asp.net不使用服务器控件上传文件时的无意问题
- 不使用ASP.NET中的服务器控件将如何上传文件?
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件
- BZOJ 2440: [中山市选2011]完全平方数
- Redis安装步骤
- php7.10
- spring 注解
- 剑指offer--16.反转链表
- .net 服务器控件实现文件上传
- 开发工具:AS如何正确导入下载的开源项目
- uva 11181 DFS+概率计算
- 小谈网络游戏同步
- redhat/centos 搭建svn服务器环境
- GCD介绍
- Javaz整型数据类型、浮点型数据类型,取值范围
- MapReduce2.0
- 方法重载