贴代码框架PasteForm特性介绍之image

简介

PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管理端只有Html+js版本的,后续将支持小程序,Vue等

案例源码

案例源码在

https://gitee.com/pastecode/paste-template

不定期升级

AllInDto!

通过引入PasteForm,一个项目哪怕100个数据表,一般的管理页面也才不到10个,除非有非常多的特殊功能,否则都能用PasteForm中的表格和表单来实现!

在这里插入图片描述

本次的特性介绍,涉及的东西会多一些,你可以下载源码后,看看详细的,我们先来查看下各个特性的信息

image

当前特性可以作用于所有的Dto中,具体的样式由前端决定,支持单图和多图模式

字段类型示例说明
args1数字1图片数量
args2字符cate存放在什么位置,上传图片的时候会附带到参数type中 也会用于图片的样式?
args3字符60*60图片是否需要压缩,压缩的宽高,不压缩的设置为0,比如60*0
args4字符smallsmall,normal,big表示图片的大小三个规格,默认normal,如果要返回格式,则由dataFrom决定

UI

在这里插入图片描述

Dto

    /// <summary>/// 图片案例/// </summary>public class ImageModel{/// <summary>/// 图片1/// </summary>[ColumnDataType("image","1","icon","120*120")]public string Img1 { get; set; }/// <summary>/// 图片2/// </summary>[ColumnDataType("image", "1", "head", "750*0")]public string Img2 { get; set; }/// <summary>/// 图片3/// </summary>[ColumnDataType("image", "2", "head", "750*0")]public string Img3 { get; set; }/// <summary>/// 图片4/// </summary>[ColumnDataType("image", "2", "head", "120*0")]public string[] Img4 { get; set; }}

提交的数据

在这里插入图片描述
提交的json数据如下
在这里插入图片描述
注意看提交的信息中的img3,和img4,一个是字符串,使用了拼接,一个是数组,这个是由原来的Dto的数据类型决定的!

默认上传文件的地址为/api/app/Upload/UpImage,注意看上图的url的参数type和size就是特性中配置的类型和大小!

表格中显示

如果你对ListDto的字段进行image特性标注,则在表格中会以image的模式显示,而不是字符串!

UpImage

你可以基于这个案例,自己修改API是现实上传图片

        /// <summary>/// 上传图片/// </summary>/// <returns></returns>[HttpPost][TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "data", "view" })]public WangEditorUpload UpImage(string type = "bookmark", string size = ""){var one = new WangEditorUpload();one.errno = 1;var _month = DateTime.Now.ToString("yyyyMM");if (base.Request.Form != null){if (base.Request.Form.Files != null){if (base.Request.Form.Files.Count > 0){one.errno = 0;one.data = new List<WangEditorUploadItem>();for (var k = 0; k < base.Request.Form.Files.Count; k++){var finput = base.Request.Form.Files[k];//这里还要进行文件后缀的过滤var item = new WangEditorUploadItem();var extension = System.IO.Path.GetExtension(finput.FileName);if (String.IsNullOrEmpty(extension)){extension = ".jpg";}else{if (!extension.StartsWith(".")){extension = "." + extension;}}if (extension != ".gif"){extension = ".webp";}var filename = $"{finput.FileName}{k}{DateTimeOffset.Now.ToUnixTimeMilliseconds()}".ToMd5Lower();var _char = Path.DirectorySeparatorChar.ToString();var savepath = $"upload/{type}/{_month}/{filename}{extension}";var path = System.IO.Path.GetDirectoryName(savepath);if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); }if (System.IO.File.Exists(savepath)) { System.IO.File.Delete(savepath); }item.alt = finput.FileName;item.href = $"/{savepath}";item.url = $"/{savepath}";if (IsImageExtension(finput.FileName)){var _width = 0;var _height = 0;if (!String.IsNullOrEmpty(size)){var _sizes = size.Split('*');int.TryParse(_sizes[0], out _width);int.TryParse(_sizes[1], out _height);}using var image = Image.Load<Rgba32>(finput.OpenReadStream());if (image.Width > _width && _width != 0){image.Mutate(x => x.Resize(_width, _height));}else{if (image.Height > _height && _height != 0){image.Mutate(x => x.Resize(_width, _height));}}if (extension == ".webp"){image.Save(savepath, new WebpEncoder());}else{image.Save(savepath);}item.url = $"/{savepath}";finput.OpenReadStream().Dispose();}else{using (FileStream fs = new FileStream(savepath, FileMode.Create)){finput.CopyTo(fs);fs.Flush();}}item.size = finput.Length;one.data.Add(item);}}}}return one;}

PasteForm附加信息

特性处理

                    case "image":{item.dataType = 'image';if (_attribute.args1) {item.num = parseInt(_attribute.args1);} else {item.num = 1;}if (_attribute.args2) {item.type = _attribute.args2;}if (_attribute.args3) {item.size = _attribute.args3;}if (item.value) {if (item.num > 1) {if (item.dataFrom == "String[]") {item.images = item.value;//多个图片是一个数组,字符串数组的形式item.value = item.value.join(',');} else {item.images = item.value.split(',');//多个图片之间使用,隔开}}}if (item.num > 1) {item.singlerow = true;}}break;

UI逻辑

                        <% if(item.dataType == "image" || item.dataType=="images"){ %><input type="text" style="display:none" name="<%:=item.name%>" value="<%:=item.value%>"><input type="file" multiple id="<%:=item.name%>" datanum="<%:=item.num%>" onchange="handlerUploadFile(this)" datatype="<%:=item.type%>" datasize="<%:=item.size%>" style="display:none;" /><% if(item.num ==1){%><label for="<%:=item.name%>"><img class="form-image-head" <% if(item.value && item.value !=null ){ %>src="<%:=item.value%>"<%}%> ><%if(!item.value || item.value ==null){%><span class="iconadd icon-add"><i class="Hui-iconfont Hui-iconfont-add2 icon"></i></span><%}%></label><span class="placeholder"><%:=item?.placeholder || ''%></span><% }else{ %><span class="placeholder"><%:=item?.placeholder || ''%></span><ul class="imageul"><li><label for="<%:=item.name%>"><span class="icon-add"><i class="icon Hui-iconfont Hui-iconfont-add2"></i></span></label></li><%if(item.images){%><%item.images.forEach(_img=>{%><li><img src="<%:=_img%>"><i class="Hui-iconfont Hui-iconfont-close2 icon-close"  onclick="handlerRemoveImageItem(this)"></i></li><%})%><%}%><!-- <li><img><i class="iconfont icon-close" οnclick="handlerRemoveImageItem(this)"></i></li> --></ul><% } %><%}%>

更多特性见

贴代码PasteForm专题介绍

我们下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/476407.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望

作者&#xff1a;金峰&#xff08;项良&#xff09;、朱永林、赵世振&#xff08;寰奕&#xff09; 公司简介 杭州热联集团股份有限公司成立于 1997 年 10 月&#xff0c;是隶属杭州市实业投资集团的国有控股公司。公司专业从事国际、国内钢铁贸易黑色大宗商品及产业服务&…

Python Turtle召唤童年:喜羊羊与灰太狼之懒羊羊绘画

Python Turtle召唤童年&#xff1a;喜羊羊与灰太狼之懒羊羊绘画 &#x1f438; 前言 &#x1f438;&#x1f41e;往期绘画&#x1f41e;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f438; 前言 &#x1f438; 小时候&#xff0c;每次打开电视…

SpringBoot学习记录(四)之分页查询

SpringBoot学习记录&#xff08;四&#xff09;之分页查询 一、业务需求1、基本信息2、请求参数3、相应数据 二、传统方式分页三、使用PageHelper分页插件 一、业务需求 根据条件进行员工数据的条件分页查询 1、基本信息 请求路径&#xff1a; /emps 请求方式&#xff1a; …

6. Spring Cloud Gateway网关超详细内容配置解析说明

6. Spring Cloud Gateway网关超详细内容配置解析说明 文章目录 6. Spring Cloud Gateway网关超详细内容配置解析说明前言1 Spring Cloud Gateway 概述1.1 Spring Cloud Gateway网关 的核心功能1.2 Spring Cloud Gateway VS Zuul 的区别1.3 Spring Cloud Gateway 的基本原理1.4 …

远程管理不再难!树莓派5安装Raspberry Pi OS并实现使用VNC异地连接

前言&#xff1a;大家好&#xff01;今天我要教你们如何在树莓派5上安装Raspberry Pi OS&#xff0c;并配置SSH和VNC权限。通过这些步骤&#xff0c;你将能够在Windows电脑上使用VNC Viewer&#xff0c;结合Cpolar内网穿透工具&#xff0c;实现长期的公网远程访问管理本地树莓派…

Centos 8, add repo

Centos repo前言 Centos 8更换在线阿里云创建一键更换repo 自动化脚本 华为Centos 源 , 阿里云Centos 源 华为epel 源 , 阿里云epel 源vim /centos8_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.han

【机器学习】回归模型(线性回归+逻辑回归)原理详解

线性回归 Linear Regression 1 概述 线性回归类似高中的线性规划题目。线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合&#xff08;加减乘除&#xff09;起来&#xff0c;得到的结果和目标接近。 线性回归分为一元线性回归和多元线性回归。 2 一元线…

2024年亚太地区数学建模大赛D题-探索量子加速人工智能的前沿领域

量子计算在解决复杂问题和处理大规模数据集方面具有巨大的潜力&#xff0c;远远超过了经典计算机的能力。当与人工智能&#xff08;AI&#xff09;集成时&#xff0c;量子计算可以带来革命性的突破。它的并行处理能力能够在更短的时间内解决更复杂的问题&#xff0c;这对优化和…

STM32F103 GPIO和串口实战

本节我们将会对STM32F103的硬件资源GPIO和串口进行介绍。 一、GPIO 1.1 电路原理图 LED电路原理图如下图所示&#xff1a; 其中&#xff1a; LED1连接到PA8引脚&#xff0c;低电平点亮&#xff1b;LED2连接到PD2引脚&#xff0c;低电平点亮&#xff1b; 1.2 GPIO引脚介绍 STM32…

FileProvider高版本使用,跨进程传输文件

高版本的android对文件权限的管控抓的很严格,理论上两个应用之间的文件传递现在都应该是用FileProvider去实现,这篇博客来一起了解下它的实现原理。 首先我们要明确一点,FileProvider就是一个ContentProvider,所以需要在AndroidManifest.xml里面对它进行声明: <provideran…

国产linux系统(银河麒麟,统信uos)使用 PageOffice 动态生成word文件

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;LoogArch&#xff09;芯片架构。 数据区域填充文本 数…

《Python制作动态爱心粒子特效》

一、实现思路 粒子效果&#xff1a; – 使用Pygame模拟粒子运动&#xff0c;粒子会以爱心的轨迹分布并运动。爱心公式&#xff1a; 爱心的数学公式&#xff1a; x16sin 3 (t),y13cos(t)−5cos(2t)−2cos(3t)−cos(4t) 参数 t t 的范围决定爱心形状。 动态效果&#xff1a; 粒子…

[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法

本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时&#xff0c;突然发现它的一个接口&#xff0c;被另一个服务ip频繁的请求。 按理说&#xff0c;之前设置的是&#xff0c;每隔1分钟请求一次接口。但从日志来看&#xff0c;则是1秒钟请求一次&#xff…

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境&#xff0c;使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载&#xff1a; MAVEN下载传送…

C++标准模板库 -- map和set

序列式容器和关联式容器 在本篇文章之前&#xff0c;我们已经接触了STL中的部分容器&#xff1a;如string、vector、list、deque、array、forward_list等&#xff0c;这些容器被统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值一般…

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…

Flutter踩坑记录(三)-- 更改入口执行文件

我们在flutter 中可能不习惯默认的lib/main.dart 作为入口文件&#xff0c;会修改成index.dart 或者修改main.dart的位置, 用Andorid studio开发 如果我们用Andorid studio开发&#xff0c;默认修改一下配置地址 运行项目即可。 用VSCode开发 如果我们使用VSCode开发&…

AbsPlus框架介绍2

ABSPlus框架以其集成的多功能性在市场上脱颖而出。它不仅提供美观且符合主流风格的页面设计&#xff0c;还支持灵活的流程配置&#xff0c;包括算法处理流程和页面审批流程。在众多业务系统中&#xff0c;流程管理往往是核心且复杂的挑战&#xff0c;涉及数据库设计、页面开发以…

算法.图论-习题全集(Updating)

文章目录 本节设置的意义并查集篇并查集简介以及常见技巧并查集板子(洛谷)情侣牵手问题相似的字符串组岛屿数量(并查集做法)省份数量移除最多的同行或同列石头最大的人工岛找出知晓秘密的所有专家 建图及其拓扑排序篇链式前向星建图板子课程表 本节设置的意义 主要就是为了复习…

使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像

文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署 Nginx docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis docker pull redis docker run --…