返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET MVC使用JSAjaxFileUploader插件实现单文件上传
  • 461
分享到

ASP.NET MVC使用JSAjaxFileUploader插件实现单文件上传

2024-04-02 19:04:59 461人浏览 八月长安
摘要

先看效果: 上传文件显示进度条: 停止上传按钮和关闭缩略图按钮: 限制上传文件的类型: 限制上传文件的尺寸: 上传成功后显示缩略图、文件名以及回传信息: 点击界面上的删除按

先看效果:

  • 上传文件显示进度条:

  • 停止上传按钮和关闭缩略图按钮:

  • 限制上传文件的类型:

  • 限制上传文件的尺寸:

  • 上传成功后显示缩略图、文件名以及回传信息:

  • 点击界面上的删除按钮,界面删除,同步删除文件夹中文件。
  • 重新上传文件,界面删除,同步删除文件夹中文件,并界面显示新的缩略图、文件名等。

HomeController

由于需要把保存到文件夹文件的路径、文件名等回传给界面,所以需要一个类,专门负责回传给客户端所需要的信息。

    public class UploadFileResult
    {
        public string FileName { get; set; }
        public int Length { get; set; }
        public string Type { get; set; }
        public bool IsValid { get; set; }
        public string Message { get; set; }
        public string FilePath { get; set; } 
    }

把上传的文件名改成以时间命名的格式,并保存到文件夹,再把回传信息以JSON形式传递给视图。关于删除,需要接收来自视图的文件名参数。

        #region 上传单个文件
 
        //显示
        public ActionResult Index()
        {
            return View();
        }
 
        //接收上传
        [HttpPost]
        public ActionResult UploadFile()
        {
            List<UploadFileResult> results = new List<UploadFileResult>();
            foreach (string file in Request.Files)
            {
                HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
                if (hpf.ContentLength == 0 || hpf == null)
                {
                    continue;
                }
 
                var fileName = DateTime.Now.ToString("yyyyMMddhhmmss") +
                               hpf.FileName.Substring(hpf.FileName.LastIndexOf('.'));
                string pathForSaving = Server.MapPath("~/ajaxUpload");
                if (this.CreateFolderIfNeeded(pathForSaving))
                {
                    hpf.SaveAs(Path.Combine(pathForSaving, fileName));
                    results.Add(new UploadFileResult()
                    {
                        FilePath = Url.Content(String.FORMat("~/AjaxUpload/{0}", fileName)),
                        FileName = fileName,
                        IsValid = true,
                        Length = hpf.ContentLength,
                        Message = "上传成功",
                        Type = hpf.ContentType
                    });
                }
            }
 
            return json(new
            {
                name = results[0].FileName,
                type = results[0].Type,
                size = string.Format("{0} bytes", results[0].Length),
                path = results[0].FilePath,
                msg = results[0].Message
            });
        }    
 
        #region 共用方法
        /// <summary>
        /// 检查是否要创建上传文件夹,如果没有就创建
        /// </summary>
        /// <param name="path">路径</param>
        /// <returns></returns>
        private bool CreateFolderIfNeeded(string path)
        {
            bool result = true;
            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (Exception)
                {
                    //TODO:处理异常
                    result = false;
                }
            }
            return result;
        }
 
        //根据文件名称删除文件
        [HttpPost]
        public ActionResult DeleteFileByName(string name)
        {
            string pathForSaving = Server.MapPath("~/AjaxUpload");
            System.IO.File.Delete(Path.Combine(pathForSaving, name));
            return Json(new
            {
                msg = true
            });
        }
        #endregion

Home/Index.cshml

前台视图主要做如下几件事:

  • 每次上传之前检查表格中是否有数据,如果有,实施界面删除并同步删除文件夹中的文件
  • 上传成功动态创建表格行显示缩略图、文件名和删除按钮
  • 点击删除按钮实施界面删除并同步删除文件夹中的文件

由于表格行是动态生成的,需要对删除按钮以"冒泡"的方式注册事件: $('#tb').on("click", ".delImg", function ()

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <link href="~/Content/JSAjaxFileUploader/Jquery.JSAjaxFileUploader.CSS" rel="external nofollow"  rel="stylesheet" />
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/JSAjaxFileUploader/JQuery.JSAjaxFileUploaderSingle.js"></script>
    <style type="text/css">
        #tb table{
            border-collapse: collapse;              
            width: 600px;         
        }
 
        #tb td {
            text-align: center;
            padding-top: 5px;
            width: 25%;
        }
 
        #tb tr {
            background-color: #E3E3E3;
            line-height: 35px;
        }
 
        .showImg {
            width: 50px;
            height: 50px;
        }
    </style>
    <script type="text/javascript">
        $(function () {
            //隐藏显示图片的表格
            $('#tbl').hide();
 
            $('#testId').JSAjaxFileUploader({
                uploadUrl: '@Url.Action("UploadFile","Home")',
                inputText: '选择上传文件',
                //fileName: 'photo',
                maxFileSize: 512,    //Max 500 KB file 1kb=1024字节
                allowExt: 'gif|jpg|jpeg|png',
                zoomPreview: false,
                zoomWidth: 360,
                zoomHeight: 360,
                beforesend: function (file) {
                    if ($('.imgName').text() != "") {
                        deleteImg();
                        $('#tbl').hide();
                    }
                },
                success: function (data) {
                    $('.file_name').html(data.name);
                    $('.file_type').html(data.type);
                    $('.file_size').html(data.size);
                    $('.file_path').html(data.path);
                    $('.file_msg').html(data.msg);
                    createTableTr();
                    $('#tbl').show();
                    $('.showImg').attr("src", data.path);
                    $('.imgName').text(data.name);
                },
                error: function (data) {
                    alert(data.msg);
                }
            });
 
            //点击删除链接删除刚上传图片
            $('#tbl').on("click", ".delImg", function () {
                deleteImg();
                //window.location.reload();
            });
        });
 
        //删除图片方法:点击删除链接或上传新图片删除原先图片用到
        function deleteImg() {
            $.ajax({
                cache: false,
                url: '@Url.Action("DeleteFileByName", "Home")',
                type: "POST",
                data: { name: $('.imgName').text() },
                success: function (data) {
                    if (data.msg) {
                        //alert("图片删除成功");
                        $('.delImg').parent().parent().remove();
                        
                    }
                },
                error: function (jqXhr, textStatus, errorThrown) {
                    alert("出错了 '" + jqXhr.status + "' (状态: '" + textStatus + "', 错误为: '" + errorThrown + "')");
                }
            });
        }
 
        //创建表格
        function createTableTr() {
            var table = $('#tbl');
            table.append("<tr><td><img class='showImg'/></td><td colspan='2'><span class='imgName'></span></td><td><a class='delImg' href='javascript:void(0)'>删除</a></td></tr>");
        }
    </script>
</head>
<body>
    <div id="testId"></div>
    
    <div id="tb">
        <table id="tbl">
            <tbody>         
            </tbody>
        </table>
    </div>
        <div class="file_name"></div>
        <br />
        <div class="file_type"></div>
        <br />
        <div class="file_size"></div>
        <br />
        <div class="file_path"></div>
        <br />
        <div class="file_msg"></div>
</body>
</html>

另外:需要删除源js文件中input元素的multiple属性,使之只能接收单个文件。

本篇源码github

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对编程网的支持。如果你想了解更多相关内容请查看下面相关链接

--结束END--

本文标题: ASP.NET MVC使用JSAjaxFileUploader插件实现单文件上传

本文链接: https://lsjlt.com/news/167323.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ASP.NET MVC使用JSAjaxFileUploader插件实现单文件上传
    先看效果: 上传文件显示进度条: 停止上传按钮和关闭缩略图按钮: 限制上传文件的类型: 限制上传文件的尺寸: 上传成功后显示缩略图、文件名以及回传信息: 点击界面上的删除按...
    99+
    2024-04-02
  • asp.net如何使用ajaxFileUpload插件上传文件
    这篇文章主要讲解了“asp.net如何使用ajaxFileUpload插件上传文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“asp.net如何使用ajaxFileUpload插件上传文件...
    99+
    2023-06-22
  • asp.net使用ajaxFileUpload插件上传文件(附源码)
    ajaxFileUpload.js 很多同名的,因为做出来一个很容易。 我用的是这个:https://github.com/carlcarl/AjaxFileUpload 下载地址在...
    99+
    2024-04-02
  • ASP.NET实现文件上传
    本文实例为大家分享了ASP.NET实现文件上传的具体代码,供大家参考,具体内容如下 .NET中C/S和B/S上传文件不同 B/S中文件上传和C/S中的文件上传性质完全不一样 在C/S...
    99+
    2024-04-02
  • ASP.NET实现文件上传功能
    本文实例为大家分享了ASP.NET实现文件上传功能的具体代码,供大家参考,具体内容如下 1、搭建网站结构 2、编写网页文件 创建一个Web窗体UploadFile和UpFile文件...
    99+
    2024-04-02
  • 使用Spring MVC怎么实现文件上传和下载
    这期内容当中小编将会给大家带来有关使用Spring MVC怎么实现文件上传和下载,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文件上传导入主要依赖<!--文件上传--><dependen...
    99+
    2023-06-14
  • Spring MVC实现文件上传和下载
    本文实例为大家分享了Spring MVC实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件上传 1、导入主要依赖 <!--文件上传--> <depe...
    99+
    2024-04-02
  • asp.net中表单上传功能如何实现ajax文件异步上传
    这篇文章主要为大家展示了“asp.net中表单上传功能如何实现ajax文件异步上传”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“asp.net中表单上传功能如何...
    99+
    2024-04-02
  • php文件上传插件如何使用
    要使用PHP文件上传插件,您需要按照以下步骤进行操作:1. 下载插件:首先,您需要从互联网上下载一个PHP文件上传插件。一些常见的插...
    99+
    2023-10-18
    php
  • jQuery插件ajaxfileupload.js怎么实现上传文件
    jQuery插件ajaxfileupload.js可以实现文件上传的功能,具体实现步骤如下: 引入ajaxfileupload....
    99+
    2024-03-02
    jQuery
  • Spring MVC 实现文件的上传和下载
    文章目录 前言1. 文件上传1.1 文件上传介绍1.2 文件上传实现1.2.1 添加依赖1.2.2 配置上传解析器1.2.3 通过表单上传1.2.4 创建控制器类1.2.5 上传演示 ...
    99+
    2023-09-26
    spring mvc java java-ee
  • SpringBoot实现单文件与多文件上传
    目录一、公共文件存储代码1.FileUploadUtils.java2.FileUtils.java3.MimeTypeUtils.java4.FileException.java5...
    99+
    2024-04-02
  • 简单实现Android文件上传
    文件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的。下面是一个模拟网站程序上传文件的例子。 首先新...
    99+
    2022-06-06
    Android
  • javaWeb实现简单文件上传
    本文实例为大家分享了javaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下 1.先导入两个包:commons-fileupload-1.3.3.jar,commons-i...
    99+
    2024-04-02
  • SpringBoot简单实现文件上传
    目录1.创建SpringBoot项目2.修改application.properties配置文件3.编写控制器UserController类4.编写前端页面index.html5.效...
    99+
    2024-04-02
  • asp.net core webapi文件上传功能的实现
    最近开发一个新项目,使用了asp.net core 2.0,采用webapi开发后台,postgresql为数据库。最先来的问题就是上传文件的问题。 POST文件的一些坑 使用...
    99+
    2022-06-07
    net ASP.NET webapi core ASP
  • 使用AJAX实现上传文件
    本文实例为大家分享了使用AJAX实现上传文件的具体代码,供大家参考,具体内容如下 需求: 在前端页面选择文件上传到服务器的指定位置 前端代码 <form id="upl...
    99+
    2024-04-02
  • SpringMVC 单文件上传与多文件上传实例
    一、简述一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。二、单文件上传1、...
    99+
    2023-05-31
    springmvc 文件上传 多文件上传
  • django1.8使用表单上传文件的实现方法
    Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 在d...
    99+
    2022-06-04
    表单 上传文件 方法
  • 如何使用 Golang 实现 Form 表单文件上传?
    go 语言使用 form 表单实现文件上传包括以下步骤:在 html 中设置 enctype="multipart/form-data" 属性,创建表单。在 go 中使用 r.parse...
    99+
    2024-05-13
    文件上传 golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作