首页 > 编程语言 >Asp.Net怎么上传图片-基础教程

Asp.Net怎么上传图片-基础教程

时间:2024-01-14 10:03:48浏览次数:37  
标签:1024 Asp fileName 文件夹 基础教程 Net folderPath 上传 图片

aspx页面

script方法内用于判断用户上传的文件是否为自己要求的格式和展示图片的方法

body内定义一个图片框用于预览用户上传的图片

一个上传文件的控件

一个提交按钮

代码如下

Script代码:

$(function () {
            $('#uploadImage').on('change', function () {
                var filePath = $(this).val() //获取到input的value,里面是文件的路径
                fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase()
                src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式
                // 检查是否是图片
                if (!fileFormat.match(/.jpg|.png|.jpeg/)) {
                    alert('上传错误,文件格式必须为:png/jpg/jpeg');
                    $('#uploadImage').after($('#uploadImage').val(""));
                } else {
                    $('#cropedBigImg').attr('src', src);   //显示图片
                }
            })
        })

HTML代码:

<asp:FileUpload ID="uploadImage" runat="server" accept=".jpg,.png,.jpeg" />
        <asp:Button ID="btnUploding" runat="server" Text="上传图片" OnClick="btnUploding_Click" />
        <br />
        <asp:Image ID="cropedBigImg" runat="server" style="width:100px"/>

aspx.cs代码:

protected void btnUploding_Click(object sender, EventArgs e)
        {

            /*
             设置路径,绝对路径和相对路径的拼接
             文件夹的创建和是否存在的判断
             文件大小的判断
             判断上传后的文件夹里是否含有指定的图片
             */

            //获取网站部署的目录,绝对路径
            string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
            //我自定义的路径名称                                                                                                      //相对路径下的位置
            string filePath = @"图片上传\";
            //为防止文件名重名,同一时间多人传同一文件,服务器出错
       //ddhhmmss为日期小时分钟毫秒格式,可自定义
            string dateTimeNow = DateTime.Now.ToString("ddhhmmss");
            //图片上传的文件夹
            string folderPath = tmpRootDir + filePath;
            //判断是否存在该文件夹 如果不存在
            if (Directory.Exists(folderPath) == false)
            {
                //创建文件夹
                Directory.CreateDirectory(folderPath);
            }
            //再次判断是否存在
            if (Directory.Exists(folderPath))
            {
                //存在/成功创建 文件夹
                folderPath = folderPath + @"\";
            }
            //获取图片名称
            string fileName = uploadImage.FileName;
            if (fileName == "")
            {
                ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('请选择图片!!!')</script>");
                return;
            }
            else
            {
          //将图片重命名为当前日期时间+原名防止重复,可以自定义
                fileName = dateTimeNow + fileName;
            }
            //最后拼接出整体路径
            string pathLast = folderPath + fileName;
            //限制上传文件的大小,系统默认4M
            //1Mb=1024kb=(1024*1024)b
            if (uploadImage.PostedFile.ContentLength > ((1024 * 1024) * 10))
            {
                ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('文件大小超过10MB!!!')</script>");
                //结束执行
                return;
            }
            //保存到指定路径
            uploadImage.SaveAs(pathLast);
            //枚举指定路径里面,指定文件的数量,类型为long
            long ImgNum = Directory.GetFiles(folderPath, fileName, SearchOption.AllDirectories).LongLength;
            if (ImgNum >= 0)
            {
                ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('上传成功!!!')</script>");
                
            }
            else
            {
                ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('上传失败!!!')</script>");
                return;//不存在
            }

            //####  注意:在C#端限制所传文件大小不好用。
            //####  原因:如果文件超过了系统最大长度,C#端是限制不住的,会直接将程序崩溃。
            //####  也可以在Web.confight里面设置所传文件的大小
            //

            #region 这里是是Js限制上传文件大小
            //   < script >
            //    document.getElementById("Button1").onclick = function()
            //    {
            //                var file = document.getElementById("FileUpload1");
            //                if (file.value.length <= 0)//如果选中选中文件没有文件没有长度,就是没有选中文件
            //                {
            //                    alert("请选择所传文件");
            //                    return false;//停止操作
            //                }
            //                else
            //                {
            //                    if (file.files[0].size > ((1024 * 1024) * 10))//<strong>选中文件的第一个文件的大小</strong>大于等于10M
            //                    {
            //                        alert("文件大小不能超过10Mb");
            //                        return false;//停止操作
            //                    }
            //                }
            //            }
            //   </script > 
            #endregion
}

记得引入命名空间:

using System.IO;

到这就完成了,在aspx页面右键运行就可以看到效果,上传后的图片不会当即在VS的项目中显示出来,但是在项目文件夹中可以看到,成功点个赞!

 



标签:1024,Asp,fileName,文件夹,基础教程,Net,folderPath,上传,图片
From: https://blog.51cto.com/u_16371710/9238183

相关文章

  • .NET中轻松应用SQLite:零配置数据库引擎的完美指南
     SQLite是一种轻量级的嵌入式数据库引擎,它在.NET中被广泛使用。SQLite是一个零配置的数据库引擎,不需要服务器,可以直接在应用程序中使用。下面是一个简单的示例,演示如何在.NET中使用SQLite,并提供了常见的查询、增加、修改和删除功能。首先,你需要在项目中安装 System.D......
  • [活动(深圳)] .NET Love AI 之 .NET Conf China 2023 Party 深圳
    中国.NET社区2023年12月16日在北京成功举办了.NETConfChina2023,虽然北京飘起雪,依然挡不住想要参加活动的全国各地的.NET开发兄弟姐妹的热情。大家可以通过大会精彩照片集:https://live.photoplus.cn/live/79415183体验现场的热度。欢迎访问大会官网了解更详细的信息:https://d......
  • .Net Core 系列: 集成 Consul 实现 服务注册与健康检查
    目录什么是Consul?安装和运行ConsulAsp.NetCore如何集成Consul实现服务注册和健康检查Consul.AspNetCore中的AddConsul和AddConsulServiceRegistration方法究竟做了什么?AddConsul方法AddConsulServiceRegistration方法配置Consul检查服务封装成扩......
  • .Net Core 系列: 集成 CORS跨域配置
    .NetCore系列:集成CORS跨域配置  目录什么是CORS?Asp.NetCore种如何配置CORS?CorsPolicyBuilder类详解注册以及使用策略三种方式EnableCors和DisableCors特性关于带证书与不带证书代码的实现跨源(cross-origin)不带请求证书(Credentials)跨源(cross-origi......
  • Kubernetes Headless服务
    1、概述HeadlessServices是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP,也被称为无头服务,通过DNS解析提供服务发现。与普通服务不同的是HeadlessServices不提供负载均衡功能,每个Pod都有唯一的DNS记录,直接映射到其IP地址,适用于有状态应用......
  • .NET中的加密算法总结(自定义加密Helper类续)
    .NET中的加密算法总结(自定义加密Helper类续) 1.1.1摘要       相信许多人都使用过.NET提供的加密算法,而且在使用的过程我们必须了解每种加密算法的特点(对称或非对称,密钥长度和初始化向量等等)。我也看到过很多人写过.NET中加密算法总结,但我发现个别存在一些问题,很......
  • .NET 中的委托
    .NET中的委托 1.1.1 定义委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示://CodeinC#publicdelegateintPerformCalculation(intx,inty);......
  • asp.net mvc4 controller构造函数
    asp.netmvc4controller构造函数ASP.NETMVC4中的Controller类有多种构造函数可供使用。以下是常见的两种构造函数示例:默认构造函数(无参):publicclassMyController:Controller{publicMyController(){}//这里为空的构造函数表示没有任何初始化操作}......
  • 又涨了:net的域名铁定涨价
    关注卢松松,会经常给你分享一些我的经验和观点。又要涨价了,又要涨价了,又要涨价了!继.com域名涨价后,.net的域名也逐步涨价。最近一年来域名疯狂涨价,几个月内已经几乎翻番。阿里云2月1日起上调.net英文域名价格:首年93元续费99元,转入价格90元。这也意味着,使用各种互联网工具的创业成本......
  • 纪念一下,在国产麒麟linux下跑dotnet8,运行起来了
    纪念一下,在国产麒麟linux下跑dotnet8,运行起来了1、用vs2022的dotnet8写的跨平台web项目,编译完成。2、在麒麟linux里安装dotnet: 参考微软官方的net8安装说明,  https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0  https://dotnet.microsoft.com/zh-cn/downl......