ASP.NET实现文件上传

本文实例为大家分享了ASP.NET实现文件上传的具体代码,供大家参考,具体内容如下

.NET中C/S和B/S上传文件不同

B/S中文件上传和C/S中的文件上传性质完全不一样

在C/S中文件上传基本上的原理是:将客户端计算机上的目标文件通过Socket网络将文件发送至目标服务器端计算机,然后将接受到的数据转换为原始文件

文件–转成字节流–发送到服务器–将字节流转成文件–保存

而B/S中文件上传指的是在客户端浏览器上,将目标文件选择好之后,通过网络将文件发送至目标服务器计算机,然后将接收到的文件保存在服务器计算机上。

B/S上传文件

页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="UpLoadFileDemo.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>     <title></title> </head> <body>     <form id="form1" runat="server">         <div>             请选择要上传的文件:<asp:FileUpload ID="fileup" runat="server" />             <asp:Button ID="btnUpload" runat="server" Text="开始上传" OnClick="btnUpload_Click" />             <asp:Literal ID="lblMsg" runat="server"></asp:Literal>         </div>     </form> </body> </html>

事件:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration; namespace UpLoadFileDemo {    public partial class WebForm1 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {        }        protected void btnUpload_Click(object sender, EventArgs e)        {            //【1】判断文件是否存在            if (fileup.HasFile)            {                //【2】获取文件的大小,判断是否符合设置要求                double fileLength = fileup.FileContent.Length / (1024.0*1024.0);                //获取配置文件中对上传文件大小的限制                double limeitLength = Convert.ToDouble(ConfigurationManager.AppSettings["fileMaxLength"])/1024.0;                if (fileLength>limeitLength)                {                    lblMsg.Text = $"上传文件不能超过{limeitLength}MB";                    return;                }                // 【3】获取文件名,判断文件扩展名是否符合要求                string fileName = fileup.FileName;                //判断文件是否exe文件                if (fileName.Substring(fileName.LastIndexOf(".")).ToLower()==".exe")                {                    lblMsg.Text = "不能上传应用程序";                    return;                }                //【4】修改文件名称                //一般情况下,上传的文件服务器中保存时不会采取原文件名,因为客户端用户很庞大,要保证每个用户端上传文件不能被覆盖                fileName = DateTime.Now.ToString("yyyyMMddhhmmssms")+"_"+fileName; //年月日时分秒毫秒_原文件名 防止文件绝对覆盖                //【5】获取服务器中存储文件的路径                //"~"代表应用程序的根目录,从服务器的根目录找                  //"~" Shift键+左上角的"`"键                string path = Server.MapPath("~/UpFile");                //【6】上传文件                try                {                    fileup.SaveAs(path+"/"+fileName);//参数:要上传到的文件完整路径,路径+"/"+文件名                    lblMsg.Text = "文件上传成功";                }                catch (Exception ex)                {                    lblMsg.Text = $"文件上传失败{ex.Message}";                }            }        }    } }

配置文件:

<?xml version="1.0" encoding="utf-8"?> <!--   有关如何配置 ASP.NET 应用程序的详细信息,请访问   https://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration>   <appSettings>     <!--配置上传文件最大的字节数:kb单位--><!--30MB-->     <add key="fileMaxLength" value="30720"/>   </appSettings>   <system.web>     <compilation debug="true" targetFramework="4.6.1"/>     <!--httpRuntime中可以设置请求的最大字节数maxRequestLength-->     <httpRuntime targetFramework="4.6.1" maxRequestLength="40960"/>   </system.web>   <system.codedom>     <compilers>       <compiler language="c#;cs;csharp" extension=".cs"         type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"         warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>       <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"         type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"         warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>     </compilers>   </system.codedom> </configuration>

推荐阅读

    asp中文图片验证码的实现代码

    asp中文图片验证码的实现代码,,这个代码是在别人的增加对汉字的基础功能,谢谢你,谢谢轻烟。 以前的图片验证代码很容易破解,所以在目前的基础

    1.Netty 概述

    1.Netty 概述,协议,高性能,原生 NIO 存在的问题NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握 Selector, ServerSocketChannel, SocketC

    ctnet需要打开吗|CTNET什么意思

    ctnet需要打开吗|CTNET什么意思,,1. ctnet需要打开吗1、打开手机设置,选择网络和连接,点击移动网络。2、选择接入点名称(APN)进入之后选择中国

    联通uninet设置|联通接入点uninet

    联通uninet设置|联通接入点uninet,,1. 联通接入点uninet设置如下,手机不同,对应的菜单不同,楼主要自己找找。:第一步:在菜单(功能表)-工具-设置-

    net设置在哪里|.net设置

    net设置在哪里|.net设置,,net设置在哪里联通3gnet接入点参数设置如下:名称:中国联通3G设置;接入点名称:3gnet;代理:空白;端口:空白;用户名:空白;密码: