最近有个功能需要实现批量上传图片,然后实现图片预览,因为项目比较老,同时对界面和用户操作体验也要求不太高,就没去找网上的开源插件,直接写了个简单的功能,这里做个记录备份

因为这个是实验性的小代码,就没做太多的验证和界面调整

image.png

可以实现乱序删除

image.png

这就是简单的功能界面,下面就是代码

首先是SpringMVC的xm需要配置下

class="org.springframework.web.multipart.commons.CommonsMultipartResolver"

p:defaultEncoding="UTF-8" p:maxUploadSize="5000000" p:uploadTempDir="fileUpload/temp">

JSP+js

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

response.setHeader("Cache-Control","no-store");//HTTP 1.1

response.setHeader("Pragma","no-cache");//HTTP 1.0

response.setDateHeader("Expires",0);//prevents caching at the proxy server

%>

My JSP 'batchFileUpload.jsp' starting page

$(function(){

//动态打开file标签

$("#changeImg").click(function(){

var files = document.getElementsByName("file");

for(var i = 0;i

{

if($(files[i]).val()=='')

{

$(files[i]).click();

break;

}

}

});

});

//预览图事件

function readURL(preFile,markId){

var reader = new FileReader();

reader.readAsDataURL(preFile.files[0]);

reader.onload = function(e){

//循环判断为空

var preImges = document.getElementsByName("preImg");

for(var i =0;i

if($(preImges[i]).attr("src")==''){

$(preImges[i]).removeAttr("src");

$(preImges[i]).removeAttr("markId");

$(preImges[i]).attr("src",e.target.result);

$(preImges[i]).attr("markId",markId);

break;

}

}

}

}

//删除预览图事件

function deletePre(preId){

$("#"+preId).removeAttr("src");

$("#"+preId).attr("src",'');

var tempMark = $("#"+preId).attr("markId");

$("#"+tempMark).val('');

}

简单的照片预览与批量上传
用户名:  
相册:    
删除 删除 删除

实际提交相片的File组件

后台代码

package com.lovo.controller;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.multipart.MultipartFile;

import com.lovo.utils.FileUploadCheck;

@Controller

public class batchImgController {

private static Logger logger = Logger.getLogger(batchImgController.class);

@RequestMapping(value = "/batchImg.do",method = RequestMethod.GET)

public String batchImgGet(){

//get方法,处理jsp跳转前的一些验证和准备

return "batchFileUpload";

}

/**

* 图片批量提交方法

* @param userName

* @param file

* @return

*/

@RequestMapping(value = "/batchImg.do",method = RequestMethod.POST)

public String batchImgPost(@RequestParam("userName") String userName,@RequestParam("file")MultipartFile[] file ,HttpServletRequest request){

//表单基本信息

System.out.println(userName);

// 文件保存路径

String filePath = request.getSession().getServletContext().getRealPath("/") + "fileUpload/";

//储存文件名或文件路径

List imgNameList = new ArrayList();

try {

for (MultipartFile img : file)

{

if(!img.isEmpty())

{

//文件重命名

Date day = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

String newName = sdf.format(day)+System.currentTimeMillis()+".jpg";

//方法判定是否为图片

if(FileUploadCheck.allowUpload(img.getContentType()))

{

img.transferTo(new File(filePath+newName));

//存储文件的新名字,之后根据项目情况对文件进行入库,并把实体文件上传到FTP

imgNameList.add(newName);

}

}

}

} catch (Exception e) {

logger.error("文件上传失败");

}

return "batchFileUpload";

};

}

工具类

package com.lovo.utils;

import java.util.Arrays;

import java.util.List;

public class FileUploadCheck {

//支持的文件类型

public static final List ALLOW_TYPES = Arrays.asList("image/jpg","image/jpeg","image/png","image/gif");

//校验文件类型是否是被允许的

public static boolean allowUpload(String postfix){

return ALLOW_TYPES.contains(postfix);

}

}

java批量上传图片预览_SpringMVC批量上传图片,实现上传前图片预览相关推荐

  1. JavaScript 实现图片上传前本地预览

    JavaScript 实现图片上传前本地预览 图片上传前预览,应该算是一个普遍的需求,很多时候可能选中的图片并不是想要的那张,所以需要上传前预览下. JS(浏览器中)是一门特殊的语言,它没有直接读写磁 ...

  2. java实现文件上传预览_jsp+springmvc实现文件上传、图片上传和及时预览图片

    1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...

  3. asp.net mvc 上传到服务器 图片不显示,ASP.NET MVC实现图片上传、图片预览显示

    先看看效果(下面gif动画制作有点大,5.71MB): 题外话:上面选择图片来源于Insus.NET的新浪微博,言归正传,由于以前的asp.net mvc的练习文件上传文件,显示或是下载等博文,均是存 ...

  4. 个人永久性免费-Excel催化剂功能第102波-批量上传本地图片至网络图床(外网可访问)...

    自我突破,在100+功能后,再做有质量的功能,非常不易,相对录制视频这些轻松活,还是按捺不住去写代码,此功能虽小,但功课也做了不少,希望对真正有需要的群体带来一些惊喜. 背景介绍 图床的使用,一般是写 ...

  5. upload组件实现图片上传,图片上传,上传图片,上传头像,批量上传图片前后端逻辑

    1.主要使用el-ui的upload组件.代码如下,最主要的就是将上传的文件转化为当前的url显示在页面 主要代码如下,基于vue的: <template><div><e ...

  6. java 上传的图片大小为0_JAVA技术:上传图片的缩放处理

    图片上传到后,会根据情况将图片缩小成一个图标,我们可以利用java强大的图形处理功能,对上传的图片进行缩放处理. 下面的程序使用jdk1.4中最新的ImageIO对图片进行读写.使用AffineTra ...

  7. canvas使用Ajax上传图片PHP,使用ajax上传图片,并且使用canvas实现出上传进度效果...

    前端代码: 使用ajax上传图片,并使用canvas实现出上传进度效果 #myImg { border: 1px solid gray; border-radius: 8px; position: a ...

  8. 在BAE搭建的Django中实现图片上传并用jquery预览图片

    在BAE上搭建好了django,如何实现图片上传并预览呢? 想要实现图片上传并不难,但是想看到刚上传的图片,就得在服务器返回上传后图片的url.可是返回数据的话,网页就会重定向.因此想要在上传页面预览 ...

  9. php单图上传并预览,JavaScript实现单图片上传并预览功能

    本文实例为大家分享了JavaScript实现单图片上传并预览功能的具体代码,供大家参考,具体内容如下 单图片上传并实现预览 /*上传图片*/ .addPerson{ line-height: 190p ...

最新文章

  1. 当量子计算和机器学习相遇,会碰撞出什么火花?
  2. 线程的调度有抢占式或者非抢占 (转)
  3. IPK僵尸网络 看看其传播手法
  4. 词云(WordCloud)参数详情
  5. 分布式文件系统研究-技术应用场景
  6. 关于编写流程的一些经验
  7. 从github clone文件: Failed to receive SOCKS4 connect request ack.
  8. 同字母异序词 python_49. 字母异位次分组(Python)
  9. (59)简单介绍RAM IP核类型和接口信号?
  10. 华为Mate 20 X 5G版本月起全球开卖:国内上市的首款5G手机
  11. Bailian2798 2进制转化为16进制【进制】
  12. 拓端tecdat|R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
  13. mysql 优化配置 大批量数据插入_MySQL数据库插入100w条数据要花多久?
  14. CSDN论坛新手指南
  15. 精通python自然语言处理_精通Python自然语言处理(异步图书) 欢迎来到异步社区!...
  16. 离散数学|代数系统(超详细期末复习)
  17. 试验设计系列(一)| 样本量与功效(power)的计算
  18. 黄柳青:中国软件的致命缺陷是什么!
  19. RT-Thread Smart上手指南~
  20. python整形怎么切片_遥感影像切分切片

热门文章

  1. 牧师与魔鬼(动作分离版)
  2. 企业用友nc软件的oracle数据库服务器中了locked1勒索病毒如何解密恢复
  3. 白话讲懂Cortex 内核中的AHB总线
  4. 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Create创建操作
  5. 10.衡量计算机性能的主要指标是,衡量计算机性能的主要技术指标是什么
  6. C++类设计和实现的十大最佳实践
  7. 银泰百货响应国家扩大内需战略,改善服务提振商业消费热度
  8. php stristr,PHP中strpos、strstr和stripos、stristr函数分析
  9. 小红书数据分析:这个夏天,“围炉冰茶”继续刷屏
  10. 探索车险未来方向,2018平安产险数据建模大赛圆满落幕,获得第五名