使用SpringMVC配合jQuery文件上传插件ssi-uploader实现多图片可预览上传

springmvc使用ssi-uploader批量上传图片及后台接受 这是上传界面的jsp     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()             + path + "/";     String error = (String) request.getAttribu 阅读详情

公司业务中要实现一个带预览功能的多图片上传。在网上找了很多资料,都有或多或少的不足。有的可以实现多图片上传功能,但前台的实际操作为每次选择一张图片,没有预览功能,上传时可以将多个选中的图片保存到一个数组中,java后台使用CommonsMultipartFile files[] 或MultipartFile files[]数组接受.这样的案例网上有很多,这里就不详细介绍了。也有一些前台用基于jquery框架实现多图片预览上传的文档,但是很可惜的没有后台java接受方式的介绍.我在这里就卡住了很久.很是纠结。


    好了,废话不多说。上代码。

    我的这个可预览的多图片上传,借用了前台的jquery框架ssi-uploader,可在http://www.jq22.com/jquery-info9613 jquery插件库这个网站上免费下载.后台使用springMVC控制层框架对上传来的图片进行相应的处理.


spring-mvc.xml控制层要配置接受文件的设置

        <!-- 图片上传的相关配置 -->
	<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8"/> 
	<!-- 指定所上传文件的总大小不能超过500KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和。这个的大小是以字节为单位的,要多大自己算好了再设置
           -->  <property name="maxUploadSize" value="500000"/>
           	<!--  最大内存大小 (10240) -->
            <property name="maxInMemorySize" value="40960" />
        </bean>


前台jsp页面的配置

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/jquery-easyui-1.5.1/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/jquery-easyui-1.5.1/themes/icon.css">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/jquery-easyui-1.5.1/demo.css">
<script type="text/javascript" src="<%=request.getContextPath() %>/jquery-easyui-1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.8.2.min.js"></script>

<!--下面为jquery框架的代码样式引入-->
<script src="<%=request.getContextPath() %>/ImgInput/js/jquery-2.1.1.min.js" type="text/javascript"></script>
<script src="<%=request.getContextPath() %>/ImgInput/js/ssi-uploader.js"></script>
<link rel="stylesheet" href="<%=request.getContextPath() %>/ImgInput/css/ssi-uploader.css"/>
<title>图片上传功能</title>

<script type="text/javascript">
    $(function(){
    	//初始化加载空间
		$.ajax({
			url:"<%=request.getContextPath() %>/project/getSpaceList.action",//追加所有的空间
			type:"post",
			dataType:"json",
			data:{},
			success:function(data){
				for(var i=0;i<data.length;i++){
					$("#space").append("<option id='"+data[i].space_id+"'>"+data[i].space_name+"</option>");
				} 
			}
		})
    	
		//选择空间后的改变事件
		$("#space").change(function(){
			$.ajax({
				//方法的借用.获取单一空间的相关信息
				url:"<%=request.getContextPath() %>/project/getSpace.action",
				type:"post",
				dataType:"json",
				data:{
					"space_id":$("select[name='space']").find('option:selected').attr("id")
				},
				success:function(data){

					$("#space_name").empty();
					$("#space_id").empty();
					$("#space_name").append(data.space_name);
					$("#space_id").val(data.space_id);
<!--由于业务的需要,需要实现在下拉列表改变事件之后加载图片上传的控件,所以我在此处还追加了script样式.  网上可查询:如何追加script样式  -->
$("#testHtml").html("<script type='text/javascript'>var space_id=$('#space_id').val(); var pf_id=$('#pf_id').val(); var addr_code=$('#addr_code').val(); $('#ssi-upload').ssi_uploader({url:'<%=request.getContextPath() %>/upload/filesUpload.action?space_id='+space_id+'&pf_id='+pf_id+'&addr_code='+addr_code,dropZone:false,allowed:['jpg','gif','png','pdf']})<\/script>");}})}) //点击保存,页面跳转 $("#commit").click(function(){ location.href="<%=request.getContextPath() %>/customer/toCustomer_addrCL.action?cus_code="+$("#cus_code").val()+"&cus_name="+encodeURI(encodeURI($("#cus_name").text())); }) //返回$("#back").click(function(){location.href="<%=request.getContextPath() %>/work/toWork.action?cus_code="+$("#cus_code").val();}) })</script></head><body id="body"><div class="easyui-panel" title="图片上传" style="width:100%;"><div style="margin-bottom:20px"><div>客户姓名:<input type="hidden" value="${bs.cus_code }" id="cus_code" name="cus_code"><span id="cus_name">${cus_name}</span></div></div><div style="margin-bottom:20px"><div>客户地址:<input type="hidden" value="${bs.addr_code }" id="addr_code" name="addr_code"><span id="address">${bs.address }</span></div></div><div style="margin-bottom:20px" ><div><select id="space" style="width: 70%;text-align: center;" name="space"><option>请选择上传图片的空间</option></select></div><div id="space_name"></div><div class="row"> <div class="col-md-12"> <input type="file" multiple id="ssi-upload"/> <input type="text" id="space_id" > <input type="hidden" value="1" id="pf_id"> <input type="hidden" value="${bs.addr_code }" id="addr_code"> </div> </div></div><div style="margin-bottom:20px"><input type="button" value="保存" id="commit"><input type="button" value="返回" id="back"></div></div><div id="testHtml"></div>


<!-- 如果只是引入样式,此处为初始化加载框架,script代码必须在最后面,不然样式就不能正常显示 -->
<%-- <script type="text/javascript">
   //下一行的url即为你后台所走的action路径,框架的初始化加载,不加载就不会有理想的显示效果
    $('#ssi-upload').ssi_uploader({url:'<%=request.getContextPath() %>/upload/filesUpload.action?space_id='+space_id+"&pf_id="+$("#pf_id").val()+"&addr_code="+$("#addr_code").val(),dropZone:false,allowed:['jpg','gif','png','pdf']});
 </script> --%>

</body>
</html>

后台java接收上传值:

**
 * 功能:文件和图片的上传工具类
 * */
@Controller
@RequestMapping("upload")
public class FileUploadUntil {

	@Autowired
	private FileUploadUntilService service;
	
	@RequestMapping("filesUpload")
	@ResponseBody
	public String filesUpload(String space_id,String addr_code,int pf_id,HttpServletRequest request,HttpServletResponse response,Map<String, Object> model){
           MultipartHttpServletRequest Murequest = (MultipartHttpServletRequest)request;
           Map<String, MultipartFile> files = Murequest.getFileMap();//得到文件map对象
           String upaloadUrl ="D:/upload/photo/";//得到当前工程路径拼接上文件名
           File dir = new File(upaloadUrl);
           if(!dir.exists())//目录不存在则创建
               dir.mkdirs();
           for(MultipartFile file :files.values()){
             String  fileName=file.getOriginalFilename();//相片的名字
              File tagetFile = new File(upaloadUrl+fileName);//创建文件对象
              
              long size = file.getSize();
	  	      SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	  	      Date  date = new Date();
	  	      String format = form.format(date);
	  	      // 新文件名  
	  	      String newFileName =  fileName; 
	  	      //创建图片的对象,将图片的有关信息保存到数据库中
	  	      Picture pic = new Picture();
	  	      pic.setPic_name(fileName);
	  	      pic.setPic_date(format);
	  	      pic.setPic_size(size);
	  	      pic.setAddr_code(addr_code);
	  	      pic.setPf_id(pf_id);
	  	      pic.setSpace_id(Integer.parseInt(space_id));
	  	      pic.setPic_used(0);
	  	      pic.setNotes((upaloadUrl + newFileName));
               if(!file.isEmpty()){//文件名不存在 则新建文件,并将文件复制到新建文件中
                   try {
                	   //把图片的有关信息保存到数据库中
                	   service.addPic(pic);
                	   file.transferTo(tagetFile);//到这里就可以上传了,以下是处理图片及允许gif的上传
                   } catch (Exception e) {
                       e.printStackTrace();
                   }
               }
           }
           return "根据需要返回的页面";
	}
	
}



ssi-uploader:一个很棒的jQuery上传器 ssi上载器 一个很棒的jquery上传器。 文档和示例: ####安装: 用安装 npm install ssi-uploader 安装 bower install ssi-uploader 或只是下载并包含文件。 < link rel =" stylesheet " href =" dist/ssi-uploader/styles/ssi-uploader.css "/> < script src =" dist/ssi-uploader/js/ssi-uploader.min.js " > </ script > 要测试它: git clone https://github.com/ssbeefeater/ssi-uploader.git cd ssi-uploader npm install gulp 立即下载

相关推荐

基于spring 的ssi-uploader的多图片上传

基于spring 的ssi-uploader的多图片上传基于spring 的ssi-uploader的多图片上传

文件上传——ssi-uploader插件

一般文件上传的流程: 选择文件-》将文件传递到后台-》输入流以字节方式读取文件-》输出流根据指定路径写入到服务器指定位置-》文件上传结束  uploadFile_ssi-uploader.jsp &lt;%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%&gt; &l...

LaOngDaoxing的博客 2931

多图上传可预览删除,无需插件

(含php上传后台)需要一个多图上传并预览,可删除的功能,找了很多资料,试了ssi-uploader.js,都不成功,自己写了一个最简单的,不需要任何组件,直接以正常form表单提交就可以

ssiuploader php,在ssi-uploader上传图片的产检中遇到了一个问题,有用过的前端大神没...

//data参数写成固定的字符串后台可以接收到,但是变量接收不到。图片可以接收到//html专辑名称:专辑描述:专辑图片://js/*保存并上传*/varalbum_name=document.getElementById("album_name").value;varalbum_describe=document.getElementById("album_describe")...

weixin_39668470的博客 187

可拖拽和带预览图的jQuery文件上传插件ssi-uploader java后台代码

ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件。该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非常方便。提供java后台代码。

多图片上传和取消上传(基于框架)

有的弹框不能用,如果有发现问题的,私聊我哦,我万分感谢!

jQuery件可拖拽和带预览图文件上传插_ajax无刷新上传工具 ssi-uploader

下载地址 ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件。该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非常方便。使用方法在页面中引入ssi-uploader.css和ssi-uploader.js文件 HTML结构最基本的文件上传HTML结构是使用一个元素,类型为file,并指定一个id。在页面DOM元素加载完毕之后,可以通过ssi_uploader方法来初始化该文件上传插件。$("#ssi-upload").

ICode联盟 253

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题

在 if 条件后的输入框填写请求接口得到的变量 viewed ,选择条件为「小于」,输入比较数值 10 ,并在 if 条件下添加「宠物下架处理」步骤。借助新增的自动化测试流程控制条件,测试人员就可以使用 Apifox 去实现更深层更多样的测试应用场景,帮助提升测试效率,减少复杂场景的测试操作。「查询新建宠物」、「修改宠物状态为已售出」和「查询宠物状态是否修改」步骤为当前在售宠物信息盘点的三个标准步骤,所以将这三个步骤合成一组。在循环中添加「查询在售宠物」和「修改宠物状态」步骤;

877

webuploader+ssm实现图片上传

工具:1、ssm(maven方式)2、webuploader(webuploader.js,weblocder.css,Uploader.swf,images)webuploader官网地址:http://fex.baidu.com/webuploader/客户端主要代码:HTML部分:&lt;form&gt; &lt;label class="form-label col-xs-4 col-s...

浅粒的博客 1262

从零到一:基于STM32F103C8T6与HAL库的磁悬浮电赛装置实战解析

本文详细解析了基于STM32F103C8T6微控制器与HAL库,从零构建磁悬浮装置的完整实战方案。文章深入剖析了硬件设计中的线圈布局与“反向串联”巧思,以节省PWM资源;并阐述了采用三闭环PID控制算法的软件实现,结合Keil开发环境与HAL库进行工程搭建与调试。该方案为电子设计竞赛(电赛)提供了高可行性的参考,是嵌入式软硬件综合实践的优秀范例。

weixin_29169505的博客 274

从零搭建 AI 运维 Agent:告警自动诊断 + 修复的完整技术方案

适合读者:管理 5-50 台服务器的运维/SRE 工程师、技术负责人 技术栈:FastAPI + React + PostgreSQL + Redis + DeepSeek 关键词:AI运维、AIOps、自动化运维、智能告警、告警修复、Runbook自动化、DevOps、SRE、DeepSeek运维

weixin_38359457的博客 1640

基于springmvc+ajax+jquery实现图片上传

之前做了一个图片ajax上传的功能 记录一下如何实现 <input type="file" id="pictureUpload"> 首先 需要引入jquery 然后需要一个file类型的 input 第二步 $("#pictureUpload").change(function(){ var fileName=$(this).value; //获取...

LC的博客 628

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛用于连接计算机的各种硬件设备。PCIe4.0是目前较为先进的版本,提供了高达64GB/s的带宽。InfiniBand是一种用于高性能计算的高速互连技术,通过交换机在节点之间直接创建一个专用的受保护通道。InfiniBand适配器通过PCIe接口连接到CPU,另一端通过InfiniBand网络端口连接到InfiniBand子网。

全世界的博客 7543

springMVC+jquery实现图片上传

需要的jar包,添加maven依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </d...

江湖行骗老中医 288

Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。

sg_knight的专栏 6098

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3246

SpringMVC框架使用jquery-form实现图片上传

1.springMVC配置文件上传解析器 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8"> <property name="maxUploadSiz...

优快云_KONGlX的博客 198

Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文) 附安装包网盘下载

Hadoop+Spark+Flink+Zookeeper+Kafka+Hbase+Hive完全分布式高可用集群搭建 Hadoop高可用集群搭建 Spark高可用集群搭建 Flink高可用集群搭建 Zookeeper高可用集群搭建 Kafka高可用集群搭建 Hbase高可用集群搭建 Hive高可用集群搭建 mysql搭建 jdk部署 大数据集群环境搭建

Mr.L-OAM的博客 2万+

拿去吧你!基于jQuery的轻量级多图片上传组件源码,支持回显、删除、控制数量及像素大小

对于大部分系统和软件来说,上传图片是必不可少的功能,各位老哥们是否还在用原生标签<input type="file">去直接实现呢? 这种粗糙的方式很符合我们后端开发者们的口味,毕竟,功能实现才是核心,其他交给我们的前端和美工小姐姐就好。但俗话说的好:人靠衣装,佛靠金装。在这个“颜值”当道的时代,给用户丝滑的体验,让甲方爸爸拍手叫好,给产品经理有吹水的资本还是很重要的。 好了废话不多说,先看效果: 作为一名合格的程序员,具有“拿来主义”的思想很重要,毕竟谁能拒绝无脑ctrl+cv呢?下面的

MaYuKang的博客 897

链接文件及功能安全:Hightec如何将Flash驱动放进RAM

Fls本身是无法操作自身的,犯冲突。Fls_WriteCmdCycles (预留300字节)与 Fls_EraseCmdCycles(预留200字节) 函数在执行之前将会Copy进RAM,Fls本身是不能操作Fls本身的,除非把最底层的驱动函数防止在RAM或者其他的Flash里面,假设Flash放置在PF0可以操作PF1。英飞凌的驱动有个规定写指令预留300字节,擦除指令预留200字节。

梦想技术家 2142

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python tkinter实战:7个GUI小项目带你从入门到应用

图形用户界面(GUI)是连接用户与程序功能的重要桥梁,其核心在于事件驱动与组件化编程。Python作为一门简洁高效的编程语言,其标准库tkinter提供了构建原生桌面应用的基础框架。通过理解主窗口、组件(Widgets)和几何管理等核心概念,开发者可以快速搭建交互界面,将脚本工具产品化,提升内部工具的开发效率与用户体验。本文聚焦于**Python tkinter**的工程实践,通过**计算器**、文本编辑器、图片查看器等7个具体项目,系统演示了从环境搭建、事件绑定到数据持久化与打包发布的完整开发链路,旨在为

weixin_33946020的博客 396

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssiuploader php,jQuery件可拖拽和带预览图文件上传插_ajax无刷新上传工具 ssi-uploader...

ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件。该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非常方便。使用方法在页面中引入ssi-uploader.css和ssi-uploader.js文件HTML结构最基本的文件上传HTML结构是使用一个元素,类型为file,并指定一个id。在页面DOM元素加载完毕之...

weixin_32029321的博客 232

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: The method getContextPath() from the type HttpServletRequest refers to the missing type
下一篇: 前台遍历数组,后台foreach循环添加
九月刑天
博客等级 码龄10年 38粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值