.Net学习笔记之Layui多图片上传功能

以下是“.Net学习笔记之Layui多图片上传功能”的完整攻略:

简介

在现代网站开发中,图片上传功能是一个很基础且常见的需求,而Layui框架作为一款前端开发框架,提供了便捷的多图片上传插件。本篇笔记介绍如何使用Layui的多图片上传插件完成多图片上传功能,并配合C#编写后台代码进行文件保存和数据传输。

准备

  1. 本地安装Visual Studio集成开发环境及.Net框架(推荐使用VS 2019及.Net 5.0版本)。
  2. 搭建本地Web服务器(如IIS Express)。

步骤

1. 在Visual Studio中创建项目并添加必要的文件

  1. 在Visual Studio中以ASP.NET Core Web Application模板创建一个Web项目(注意:需要选择Web Application具有用户界面的类型)。
  2. 在项目中添加Layui的多图片上传插件lamda-upload.js和lamda-upload.css。
  3. 在项目中添加用于处理上传请求的C#后台代码FileUploadController.cs。

2. 添加HTML及JavaScript代码

  1. 在HTML代码中引入Layui的多图片上传插件lamda-upload.js和lamda-upload.css,并添加一个包含上传图片功能的
    元素。
<!DOCTYPE html>
<html>
<head>
    <link href="lamda-upload.css" rel="stylesheet" />
    <script src="lamda-upload.js" type="text/javascript"></script>
</head>
<body>
    <form id="uploadForm">
        <div class="layui-upload">
            <button type="button" class="layui-btn layui-btn-normal" id="testList">选择图片</button>
            <div class="layui-upload-list">
                <table class="layui-table">
                    <thead>
                        <tr>
                            <th>文件名</th>
                            <th>大小</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody id="demoList"></tbody>
                </table>
            </div>
            <button type="button" class="layui-btn" id="testListAction">开始上传</button>
        </div>
    </form>
</body>
</html>
  1. 在JavaScript代码中编写Layui多图片上传功能的相关代码。首先初始化多图片上传,然后在文件上传成功后将文件信息及其在服务器的路径回传给后台。这里我们以ajax传输数据的方式将数据传输至后台。
layui.use('upload', function(){
    var upload = layui.upload;
    //多文件列表示例
    var demoListView = $('#demoList')
    var uploadListIns = upload.render({
        elem: '#testList'
        ,url: '/api/FileUpload/SaveUploadImage'
        ,accept: 'images'
        ,multiple: true
        ,before: function(obj){
            //预读本地文件示例,不支持ie8
            obj.preview(function(index, file, result){
                demoListView.append('<tr><td>'+ file.name +'</td><td>'+ (file.size/1014).toFixed(1) +'kb</td><td>等待上传</td></tr>');
            });
        }
        ,done: function(res){
            //上传完毕回调
            console.log(res);
            if(res.code == 0){ //上传成功
                var html = '<tr><td>'+ res.fileName +'</td><td>'+ (res.fileSize/1014).toFixed(1) +'kb</td><td><a href="'+ res.filePath +'" target="_blank">查看</a> | <a href="#" onclick="DeleteImage(\''+ res.fileName +'\',this);return false;">删除</a></td></tr>'
                demoListView.append(html);
            } else { //上传失败
                layer.msg(res.msg);
            }
        }
    });
});

3. 添加C#后台代码

  1. 在Visual Studio中新建一个C#控制器FileUploadController.cs,在其中编写保存上传文件的代码。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace <命名空间>
{
    [Route("api/[controller]")]
    [ApiController]
    public class FileUploadController : ControllerBase
    {
        [HttpPost("SaveUploadImage")]
        public async Task<IActionResult> SaveUploadImage()
        {
            try
            {
                string dir = Directory.GetCurrentDirectory() + "\\wwwroot\\uploadimages\\";
                IFormFileCollection files = Request.Form.Files;
                if (files != null && files.Count() > 0)
                {
                    foreach (var file in files)
                    {
                        if (file.Length > 0)
                        {
                            string fileName = Path.GetFileName(file.FileName);
                            string fileExt = Path.GetExtension(fileName).ToLower();
                            if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".png")
                            {
                                if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
                                string filePath = dir + DateTime.Now.ToString("yyyyMMddHHmmssfff") + fileExt;
                                using (FileStream fs = System.IO.File.Create(filePath))
                                {
                                    await file.CopyToAsync(fs);
                                    fs.Flush();
                                }
                                return Ok(new { code = 0, fileName = fileName, fileSize = file.Length, filePath = filePath.Replace(Directory.GetCurrentDirectory() + "\\wwwroot", "") });
                            }
                            else
                            {
                                return Ok(new { code = 1, msg = "只能上传jpg、jpeg、png格式的图片" });
                            }
                        }
                    }
                }
                return Ok(new { code = 1, msg = "请选择要上传的图片" });
            }
            catch (Exception ex)
            {
                return Ok(new { code = 1, msg = ex.Message });
            }
        }
    }
}
  1. 按F5启动网站,并访问HTML文件即可查看上传结果。

至此,“.Net学习笔记之Layui多图片上传功能”的完整攻略结束。其中第2步添加HTML及JavaScript代码及第3步添加C#后台代码可根据具体的需求进行灵活修改。下面提供两条相关的示例说明。

示例说明

示例1:如何修改文件上传的路径

在后台代码中的string dir变量中修改上传文件的保存路径,例如:将当前保存路径改为Upload目录下,则需要将“string dir = Directory.GetCurrentDirectory() + \"\wwwroot\uploadimages\";”改为“string dir = Directory.GetCurrentDirectory() + \"\wwwroot\Upload\";”。

示例2:如何修改文件上传的类型

在后台代码中对上传文件的扩展名进行验证的语句"if (fileExt == \".jpg\" || fileExt == \".jpeg\" || fileExt == \".png\")"进行修改,例如:允许上传的文件扩展名为".jpg"、".jpeg"、".png"、".gif"等,则需要将该语句修改为"if (new string[] { \".jpg\", \".jpeg\", \".png\", \".gif\" }.Contains(fileExt))"。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.Net学习笔记之Layui多图片上传功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery 性能优化手册 推荐

    前言 本手册汇总 jQuery 的性能优化技巧,旨在帮助开发者提高前端性能,减小页面对浏览器的负担,提高用户体验。本文将按照优化流程的时间顺序,从 HTML 结构优化、CSS 选择器优化、JavaScript 优化、Ajax 优化以及其他方面分别进行讲解。 一、HTML 结构优化 减少 DOM 操作 尽量减少对 DOM 的操作次数,因为这会涉及到渲染时间和重…

    jquery 2023年5月28日
    00
  • jQWidgets jqxDropDownButton dropDownVerticalAlignment属性

    jQWidgets 的 jqxDropDownButton 组件是一个带有下拉菜单的按钮控件。dropDownVerticalAlignment 属性可以用于控制下拉菜单的垂直对齐方式。本攻略中,我们将详细讲解如何使用 dropDownVerticalAlignment 属性,并提供两个示例说明。 步骤1:创建一个 jqxDropDownButton 首先,…

    jquery 2023年5月10日
    00
  • 如何在jQuery中创建一个醒目的多选题

    如何在jQuery中创建一个醒目的多选题 在本攻略中,我们将详细讲解如何在jQuery中创建一个醒目的多选题,并提供两个示例来说明如何使用这些方法。 步骤1:创建HTML结构 先,我们需要创建一个HTML结构来容纳多选题。下面是一个示例HTML结构: <!DOCTYPE html> <html> <head> <ti…

    jquery 2023年5月9日
    00
  • jQuery的bind()方法使用详解

    jQuery的bind()方法使用详解 简介 bind() 方法用于为一个元素绑定事件处理函数。在 jQuery 1.7 版本及以后,可以使用 on() 方法代替 bind()。 语法 $(selector).bind(event,data,function) 参数说明: event:必需。规定要绑定的事件。可以是自定义事件,也可以是标准事件。 data:可…

    jquery 2023年5月28日
    00
  • JQuery 获得绝对,相对位置的坐标方法

    想要获取某个元素在页面中的位置坐标,可以使用 jQuery 提供的 offset() 和 position() 方法。具体使用方法如下: 1. 获取相对于页面的绝对坐标:offset() offset() 方法可以获取当前元素相对于文档顶部左上角的位置坐标,返回一个包含 top 和 left 属性的对象。 $(document).ready(function…

    jquery 2023年5月27日
    00
  • jQWidgets jqxTreeGrid hierarchicalCheckboxes属性

    以下是关于 jQWidgets jqxTreeGrid 组件中 hierarchicalCheckboxes 属性的详细攻略。 jQWidgets jqxTreeGrid hierarchicalCheckboxes 属性 jQWidgets jqxTreeGrid 的 hierarchicalCheckboxes 属性用于启用或禁用 TreeGrid 控件…

    jquery 2023年5月12日
    00
  • JQuery UI进度条方法

    JQuery UI是一个基于jQuery的UI组件库,其中包含了丰富的组件和特性,可以让我们快速实现丰富的交互体验。其中,进度条是常用的组件之一,可以用来展示任何需要表现进度的场景,比如文件上传、任务进度等。 添加依赖包 在开始使用JQuery UI进度条组件之前,我们需要先在我们的项目中添加JQuery UI的依赖包。可以通过以下步骤进行添加: 下载JQu…

    jquery 2023年5月12日
    00
  • jQWidgets jqxScheduler showLegend属性

    jQWidgets是一个基于jQuery的UI组件库,其中的jqxScheduler插件可以用于创建日程安排、预定等功能的日历视图控件。其中,showLegend属性用于控制是否在jqxScheduler控件中显示详细的时间图例信息。 showLegend属性的取值可以为布尔类型或者函数类型。下面是showLegend属性的详细讲解: showLegend属…

    jquery 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部