精华内容
下载资源
问答
  • ckfinder和ckeditor的整合,ckfinder没有批量上传图片,我加了一个小图标,实现批量上传。网上很少java版的两个整合,自己写了个。不过有个小问题,忙着也没时间去看下,IE下上传图片报找不到路径,大家看看改下哪就...
  • java 批量上传图片

    热门讨论 2013-09-09 11:09:04
    java 批量上传图片
  • java实现批量上传图片.zip java实现批量上传图片.zip java实现批量上传图片.zip java实现批量上传图片.zip java实现批量上传图片.zip
  • CkEditor批量上传图片(java)

    千次阅读 2016-12-27 16:48:45
    最近,因后台编辑需要,原来的editor不能批量上传图片(拖拽)和上传视频,于是我花了大概一周时间研究了一下ckeditor,是现实图片拖拽上传(可多个)和视频上传(flv,mp4,mov等),开始是想将这两个功能点写在一起...

    CKEditor上传视频
    CKEditor批量上传图片
    flvplayer.swf播放器
    CKEditor整合包(v4.6.1)

    ————————————————————————————————————


    最近,因后台编辑需要,原来的editor不能批量上传图片(拖拽)和上传视频,于是我花了大概一周时间研究了一下ckeditor,是现实图片拖拽上传(可多个)和视频上传(flv,mp4,mov等),开始是想将这两个功能点写在一起,后来 发现太乱,于是就分开来写吧,这样大家看的更清楚。

    前言

    ckeditor的前身是fckeditor,后来fckeditor拆分为ckeditor和ckfinder,ckeditor只是简单的编辑功能,而ckfinder是一个文件管理器,可以上传图片和视频,ckeditor是开源免费的,我们可以在github上查看源码:https://github.com/ckeditor  ,但是遗憾的是ckfinder是收费的,至于cksource公司收费这个事咱就不多讨论,弊端不说,这里夸赞一下他们的员工,我们遇到一个问题,到他们的论坛去提问,然后他们会收到一封邮件,及时来回复你,我想这就是人家收费的理由吧。回到正题,当我们用ckeditor时肯定会用到上传图片这个功能的,庆幸的是新版本的ckeditor有多种的类型,你可以下载full版的,也就是功能很全,目前最新的是4.6.1(如果你想用拖拽图片批量 上传必须是4.5以后的才行),当你下载了full版,plugs文件夹中已经有了image和flash文件夹了,说明这两个插件他已经给你自带了,这时候你只要让“上传”按钮显示出来就行。这就是我们要看到的效果。

    开始吧:

    首先你要去官网下载一个最新的full 的ckeditor:点击跳转下载Ckeditor页面。

    然后将ckeditor放入到你的项目根中就放在webapp目录下。

    上传单张图片:

    1,在config.js中添加 config.filebrowserImageUploadUrl = "/ckeditor/img";配置项。有了这个配置项,他才会显示上传的按钮,这个url是指定图片上传到哪里。当然我们一般是在页面上赋值,这样灵活性更大,

     CKEDITOR.replace('${id}',{
    	        toolbar : 'Full',
    	        filebrowserImageUploadUrl : "${base}${baseAdminPath}/ajax/upload/webdata/${channel}"
    	    });
    filebrowserImageUploadUrl 就是指定图片上传的controller。

    2,编写controller层,

    	@RequestMapping(value = "/ajax/upload/webdata/{dir}", method = RequestMethod.POST)
    	public ResponseEntity<String> upload(Map<String, Object> model, @PathVariable String dir, @RequestParam("CKEditorFuncNum") String funNum, @RequestParam("upload") MultipartFile file, HttpServletRequest request) {
    		if (file.getSize() > 0) {
    	        String path = FileUtil.uploadImg(file, BaseSysConf.ImgWebDataDir_Slash + dir, BaseSysConf.ImgUploadBasePath);
    	        model.put("msg", "File '" + file.getOriginalFilename() + "' uploaded successfully");
    	        String basePath = StringUtils.isEmpty(BaseWebConf.WebImgRootPath) ? request.getContextPath() : BaseWebConf.WebImgRootPath;
    	        String imgpath = basePath + path;
    	        String resp = "<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(" + funNum + ",'" + imgpath + "','')</script>";
    	        HttpHeaders headers = new HttpHeaders();
    	        headers.setContentType(MediaType.TEXT_HTML);
    	        return new ResponseEntity<String>(resp,headers, HttpStatus.OK);
    	    } else {
    	        HttpHeaders headers = new HttpHeaders();
    	        String resp = "";
    	        return new ResponseEntity<String>(resp,headers, HttpStatus.BAD_REQUEST);
    	    }
    	}
    这里,你主要是保存图片,并返回图片的的访问地址,主要是 resp变量

    3,到这里上传单张图片的功能就已经实现了,注意这里选择图片时只能选单张,不能框选和Ctrl,官网也是如此。

    上传多张图片:
    上传多张图片这个功能我找了好久,基本上有两种实现功能:

    1,使用文件管理器,这个功能做起来比较麻烦,还要结合ckfinder。

    2,使用拖拽上传多张,简单暴力,推荐使用,注意多张图片上传的顺序是以你鼠标点击拖动的那一张图片开始向右排序如图:

    下面我们来完成拖拽上传多张图片的功能吧:

    1,到官网查看他的插件列表发现他有个插件叫 upload images,这个插件可以拖拽和粘贴图片(粘贴好像不行我试过很多次),然后你需要下载到你的plugs文件夹中,但是你会发现这个插件又依赖于其他的插件,最后我发现一共添加了9个插件config.extraPlugins = 'selectall,notification,notificationaggregator,widgetselection,filetools,lineutils,widget,uploadwidget,uploadimage';才算完成插件的添加,因为你不添加浏览器会报错,你可以根据错去添加插件,我整合好的ckedito包 。

    2,在config.js中添加配置项: config.imageUploadUrl = "/ckeditor/img"; 这是图片拖拽后上传到的地方,页面正式的配置:

    CKEDITOR.replace('${id}',{
    	        toolbar : 'Full',
    	        imageUploadUrl: "${base}${baseAdminPath}/ajax/upload/webdata/${channel}/dropimg"
    	    });

    这里说明下,页面中的配置会将config.js的配置替换掉 

    3,contorller层:

    	@RequestMapping(value = "/ajax/upload/webdata/{dir}/dropimg", method = RequestMethod.POST)
    	@ResponseBody
    	public String dropped_img(Map<String, Object> model, @PathVariable String dir, @RequestParam("upload") MultipartFile file, HttpServletRequest request) {
    		Map<String, Object> map = new HashMap<>();
    		 if (file != null && file.getSize() > 0) {
    			 String path = FileUtil.uploadImg(file, BaseSysConf.ImgWebDataDir_Slash + dir, BaseSysConf.ImgUploadBasePath);
    			 String fileName = path.substring(path.lastIndexOf("/") + 1);
    			 String basePath = StringUtils.isEmpty(BaseWebConf.WebImgRootPath) ? request.getContextPath() : BaseWebConf.WebImgRootPath;
    		     String imgpath = basePath + path;
    		     map.put("uploaded", 1);
    		     map.put("fileName", fileName);
    		     map.put("url", imgpath);
    		 } else {
    			 map.put("uploaded", 0);
    			 map.put("error", "upload img failed");
    		 }
    		return JsonUtil.toJson(map);
    	}
    拖拽图片上传不和点击图片上传一样,它只需要以josn格式返回一些简单的信息。

    4,到这里拖拽图片传的功能也实现了,但是有一个问题就是,它会限制拖拽上传的图片格式,如果你需要修改的话:找到 supportedTypes:  然后将它的值配置出来,以下是我的配置:supportedTypes: editor.config.uploadImgSupportedTypes == undefined ? /image\/(jpeg|png|gif|bmp)/ : editor.config.uploadImgSupportedTypes,  然后在config.js中增加一项配置:config.uploadImgSupportedTypes = '';//可限制拖拽图片上传的类型  /image\/(jpeg|png|gif|bmp)/这样就可以随心所欲的配置啦~ 是不是很机智。哈哈哈。

    结语:
    在实现这个功能的过程中自己学习到了很多东西  

    一,看官网,当你百度或google不到你想要的,就去看看官网,非常棒

    二,github看源码,这是世界最大的开源it论坛,你会发现它会是你一辈子的财富。

    三,学会去阅读英文文档。

    展开全文
  • java批量图片上传

    2016-08-23 08:44:06
    oracle,java图片批量上传
  • java实现批量上传图片

    2013-05-28 11:37:40
    代码完整,导入开发工具之后就能用,界面比较美观,支持批量上传
  • 该技术实现了批量上传图片的功能,前台是jsp页面。后台是java语言编写的类文件。
  • 主要介绍了Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • swfObject图片批量上传,很美观的界面,选好图片带预览效果,通过falsh进行上传,里面放了操作文档,和效果图,基本上前台和后台代码都在里面。 一开始下载的是asp.net版本,应本人是学java,在网上找到了些资料,...
  • java批量上传图片jsp版

    热门讨论 2012-09-19 09:47:44
    一直在网上寻找jsp上传图片的版本,但是一般的都收swf版本的,对于jsp兼容性不好,所以我后来就自己动手,亲自开发了一个jsp版本的批量上传图片的控件,不过这个是基于百度的一个控件改变完成,效果很不错,所以特意...
  • 从ueditor中把批量上传图片的flash分离出来,同时实现生成缩略图
  • Java 上传图片和批量上传图片

    千次阅读 2017-12-19 19:44:21
    01.引入js工具   02.上传按钮   2.js异步提交from表单   1. 后台接收文件,上传到服务器

    01.引入js工具

     

    02.上传按钮

     

    2.js异步提交from表单

     

    1. 后台接收文件,上传到服务器


    展开全文
  • 10万+IT人都在关注的图片批量压缩上传方案(完整案例+代码) 背景需求:为了客户端访问图片资源时,加载图片更流畅,体验更好,通常不会直接用原图路径,需要根据不同的场景显示不同规格的缩略图,根据商品关键属性,...

    10万+IT人都在关注的图片批量压缩上传方案(完整案例+代码)

    背景需求:为了客户端访问图片资源时,加载图片更流畅,体验更好,通常不会直接用原图路径,需要根据不同的场景显示不同规格的缩略图,根据商品关键属性,能够获取到图片不同尺寸规格的图片路径,并且能根据不同缩略图直观看到商品的关键属性,需要写一个Java小工具把本地磁盘中的图片资源一键上传至分布式FastDFS文件服务器,并把图片信息存入本地数据库,PC端或者客户端查询商品时,就可以根据商品的业务属性。比如根据productId就能把商品相关的不同尺寸规格的图片都获取到,页面渲染图片资源时,不同的场景,直接通过文件服务器的IP+存储路径,可以在线预览。示例:商品id为1001的主图原图1001.jpg,大小为800×800(px),在本案例中解析为1001-50×50.jpg,1001-100×100.jpg,1001-200×200.jpg,1001-400×400.jpg,解析后连同原图就是5种尺寸规格的图片。前端就能直观的根据屏幕大小,业务场景等因素使用不同的图片

    实现思路:先把本地磁盘目录中的所有图片资源通过IO流读出来,读到内存中,然后对图片的名称根据定义好的业务规则解析,生成不同的图片名,然后对原图进行不同规格的解析压缩处理,以及图片资源的上传和图片信息的批量保存至数据库。

    常用的压缩方案有下面2种:

    方案一:对原图进行按照指定存储空间的压缩,比如原图100Kb,压缩至10Kb

    方案二:对原图进行指定宽高大小的压缩,比如原图800*800,压缩至100*100

    准备工作:封装一个文件流操作的通过工具类,如下:

    package com.demo.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.tomcat.util.codec.binary.Base64;
    
    /**
     * 创建时间:2019年3月13日 下午9:02:32
     * 项目名称:shsc-batchUpload-server
     * 类说明:文件流工具类
     * @author guobinhui
     * @since JDK 1.8.0_51
     */
    public class FileUtils {
    
        /* 
         * 读取本地物理磁盘目录里的所有文件资源到程序内存 
         */ 
    	public static List<File> readFiles(String fileDir) {
    	File dirPath = new File(fileDir);
    	//用listFiles()获得子目录和文件
    	File[] files = dirPath.listFiles();
    	List<File> list1 = new ArrayList<File>();
    	for (int i = 0; i < files.length; i++) {
    	  File file = files[i];
    	  if (!file.isDirectory()) {
    		list1.add(files[i]);
    	   }
    	}
    	 System.out.println("目录图片数量为:"+list1.size());
    	 return list1;
    	}
    	
        /* 
         * File文件流转为Base64的字符串流
         * 注意:通过前端页面上传图片时,用 MultipartFile文件流可以接收图片并上传,MultipartFile流有很丰富的方法
         * 本案例通过后台小工具上传,需要把图片资源的文件流转为Base64格式的流才可以上传
         */ 
    	public static String getBase64(File file) {
    	FileInputStream fis = null;
    	String base64String = null;
    	try {
    		fis = new FileInputStream(file);
    		byte[] buff = new byte[fis.available()];
    		fis.read(buff);
    		base64String = Base64.encodeBase64String(buff);
    	} catch (FileNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}	finally{
    		if(fis != null){
    			try {
    				fis.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    	return base64String;
    	}
    	
    	/**
        * 将File文件流转为字节数组
        * @param file
        * @return
        */
        public static byte[] getByte(File file){
    	byte[] bytes = null;
    	try {
    		FileInputStream fis = new FileInputStream(file);
    		bytes = new byte[fis.available()];
    		fis.read(bytes);
    		fis.close();
    	} catch (FileNotFoundException e) {
    	   e.printStackTrace();
    	} catch (IOException e) {
    	   e.printStackTrace();
    	}
    	return bytes;
        }
       
       /**
        * 将字节输出流写到指定文件
        * @param os
        * @param file
        */
        public static void writeFile(ByteArrayOutputStream os, File file){
    	FileOutputStream fos = null;
    	try {
    	   byte[] bytes = os.toByteArray();
    	   if (file.exists()) {
    		   file.delete();
    	   }
    	   fos = new FileOutputStream(file);
    	   fos.write(bytes);
    	} catch (FileNotFoundException e) {
    	   e.printStackTrace();
    	} catch (IOException e) {
    	   e.printStackTrace();
    	} finally {
    		try {
    		   fos.close();
    		} catch (IOException e) {
    		   e.printStackTrace();
    		}
    	}
        }
    }

     封装一个压缩图片处理类

    package com.demo.mapper.entity;
    
    import java.awt.Image;
    import java.awt.geom.AffineTransform;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import javax.imageio.ImageIO;
    
    /**
     * 创建时间:2019年3月13日 下午3:35:05
     * 项目名称:shsc-batchUpload-server
     * 类说明:图片压缩处理类
     * @author guobinhui
     * @since JDK 1.8.0_51
     */
    public class ImgCompress {
    
        private Image img;  
        private int width;  
        private int height;
       
        /** 
         * 构造函数 
         */  
        public ImgCompress(String filePath) throws IOException {  
            File file = new File(filePath);// 读入文件  
            img = ImageIO.read(file);      // 构造Image对象  
            width = img.getWidth(null);    // 得到源图宽  
            height = img.getHeight(null);  // 得到源图长  
        }  
    	public Image getImg() {
    		return img;
    	}
    	public void setImg(Image img) {
    		this.img = img;
    	}
    	public int getWidth() {
    		return width;
    	}
    	public void setWidth(int width) {
    		this.width = width;
    	}
    	public int getHeight() {
    		return height;
    	}
    	public void setHeight(int height) {
    		this.height = height;
    	}
        public void reSize(int w, int h,File file,String dir) throws IOException {  
            // SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好,但是速度慢  
             BufferedImage tag = new BufferedImage(50,50,BufferedImage.TYPE_INT_RGB );
    	Image img = ImageIO.read(file);
    	Image image = img.getScaledInstance(w, h, Image.SCALE_SMOOTH);
    	tag.getGraphics().drawImage(image,50, 50, null); // 绘制缩小后的图  
    	
    	// 将输入文件转换为字节数组
    	byte[] bytes = FileUtils.getByte(file);
    	// 构造输入输出字节流
    	ByteArrayInputStream is = new ByteArrayInputStream(bytes);
    	ByteArrayOutputStream os = new ByteArrayOutputStream();
    	double rate = w/800;//缩放比率
    	try {
    	  // 处理图片
    	  zoomImage(is,os,rate);
    	} catch (Exception e) {
    	  e.printStackTrace();
    	}
    	// 将字节输出流写入文件
    	FileUtils.writeFile(os,new File(dir+"/"+file.getName()));
        } 
       
       public  void zoomImage(InputStream is, OutputStream os,double Rate) throws Exception { 
         BufferedImage bufImg = ImageIO.read(is);
         AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(Rate,Rate), null);
         BufferedImage bufferedImage = ato.filter(bufImg, null);
         ImageIO.write(bufferedImage, "jpg", os);
      }
    }

    方案一具体实现过程

    package com.demo.controller;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import javax.imageio.ImageIO;
    
    import org.apache.tomcat.util.codec.binary.Base64;
    import org.springframework.beans.BeanUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import com.demo.mapper.entity.AttachmentModel;
    import com.demo.mapper.entity.ImgCompress;
    import com.demo.mapper.entity.ProductPic;
    import com.demo.service.IFileService;
    import com.demo.utils.FileUtils;
    import com.shsc.framework.common.ResultInfo;
    
    /**
     * 创建时间:2019年3月8日 下午3:03:56
     * 项目名称:shsc-batchUpload-server
     * 类说明:图片批量压缩上传
     * @author guobinhui
     * @since JDK 1.8.0_51
     */
    @RestController
    @RequestMapping(value="/file")
    public class FileController {
    
    
    @Autowired
    private  IFileService fileServiceImpl;
    
    
    @RequestMapping("/test")
    @ResponseBody
    public String test() {
      //原始图片目录
      String originalFileDir = "D:/pics/pic1";
      List <File> originalFileList = readFiles(originalFileDir);
      Iterator<File> it = originalFileList.iterator();
      //压缩后的缩略图目录
      String thumbnailDir = "D:/uploadBaseDir/productPic/20190313/thumbnail";
      long startWrite = System.currentTimeMillis();
      while(it.hasNext()){
    	File file = (File)it.next();
    	try {
    	  ImgCompress img = new ImgCompress(file.getPath());
    	  img.reSize(50, 50, file, thumbnailDir);
    	} catch (IOException e) {
    	  // TODO Auto-generated catch block
    	  e.printStackTrace();
    	  return "上传失败!";
    	}  	
       }
      long endWrite = System.currentTimeMillis();
      System.out.println("批量上传文件共计耗时:" +(endWrite-startWrite)/1000+"秒" );	
    return "<h1 style='color:red;'>批量上传文件成功,非常棒,压缩上传文件总数量为:"+num+",共计耗时"+(endWrite-startWrite)/1000+"秒</h1>";
      }  
    }

    最后在浏览器上访问该接口或者把该接口放在main方法里run,效果如下:

    方案二具体实现过程

    @RequestMapping("/upload")
    @ResponseBody
    public String upload(){
    	//win环境原始文件目录
    	String originalFileDir = "D:/pics/pic1";
    	System.out.println("读磁盘文件开始");
    	long startRead = System.currentTimeMillis();
    	List <File> originalFileList = readFiles(originalFileDir);
    	long endRead = System.currentTimeMillis();
    	System.out.println("读磁盘文件结束");
    	System.out.println("读取磁盘文件共计耗时:" +(endRead-startRead)+"毫秒" );	
    	
    	Iterator<File> it = originalFileList.iterator();
    	System.out.println("压缩拷贝文件开始");
    	long startWrite = System.currentTimeMillis();
    //	Integer size = 500;//每500个图片批量插入一次
    //	Integer i = 0;
    	String productNumber = null;
    	
    	String thumbnailDir = "D:/uploadBaseDir/productPic/20190313/thumbnail";
    	String base64 = null;
    	String new50PicName = "";
    	String new100PicName = "";
    	String new200PicName = "";
    	String new400PicName = "";
    	List <ProductPic> picList = new ArrayList<ProductPic>();
    	int picType;
    	List <Integer> sizeList = new ArrayList<Integer>();
    	sizeList.add(0,50);
    	sizeList.add(1,100);
    	sizeList.add(2,200);
    	sizeList.add(3,400);
    	
      while(it.hasNext()){
    	File file = (File)it.next();
    	System.out.println("原始文件路径为:"+file.getPath());
    	String originalFileName= file.getName();
    	String prefixName = originalFileName.substring(0,originalFileName.lastIndexOf("."));
    	String ext = originalFileName.substring(originalFileName.lastIndexOf("."));
    	
    	byte[] buff = FileUtils.getByte(file);
    	ByteArrayInputStream is = new ByteArrayInputStream(buff);
    	ByteArrayOutputStream os = null;
    	BufferedImage BI = null;
    	base64 = getBase64(file);
    	ResultInfo<?> r = fileServiceImpl.uploadBase64(base64,originalFileName);
    	AttachmentModel att = (AttachmentModel)r.getData();
    	if(originalFileName.indexOf('-') == -1) {
    	  picType = 1;
    	  productNumber = prefixName;
    	}else {
    	  picType = 2;
    	  productNumber = originalFileName.substring(0,originalFileName.lastIndexOf("-"));
    	}
    	if(r.isSuccess()) {
    	  ProductPic pic = new ProductPic();
    	  BeanUtils.copyProperties(att, pic);
    	  pic.getPicName();
    	  pic.setProductId(productNumber);
    	  pic.setPicType(picType);
    	  picList.add(pic);
    	}
    	if(originalFileName.indexOf('-') == -1) {//不带'-'的是商品主图
    	  productNumber = prefixName;
    	  new50PicName = productNumber+'-'+ "50×50"+ext;
    	  new100PicName = productNumber+'-'+ "100×100"+ext;
    	  new200PicName = productNumber+'-'+ "200×200"+ext;
    	  new400PicName = productNumber+'-'+ "400×400"+ext;
    	}else {
    	  productNumber = originalFileName.substring(0,originalFileName.lastIndexOf("-"));
    	  new50PicName = originalFileName.substring(0,originalFileName.lastIndexOf("."))+'-'+ "50×50"+ext;
    	  new100PicName = originalFileName.substring(0,originalFileName.lastIndexOf("."))+'-'+ "100×100"+ext;
    	  new200PicName = originalFileName.substring(0,originalFileName.lastIndexOf("."))+'-'+ "200×200"+ext;
    	  new400PicName = originalFileName.substring(0,originalFileName.lastIndexOf("."))+'-'+ "400×400"+ext;
    	}
    	
    	try {
    	  File f = null;
    	  BI = ImageIO.read(is);
    	  for (int i = 0; i < sizeList.size(); i++) {
    		os = new ByteArrayOutputStream();
    		Image image = BI.getScaledInstance(sizeList.get(i),sizeList.get(i), Image.SCALE_SMOOTH);
    		BufferedImage tag = new BufferedImage(sizeList.get(i),sizeList.get(i),BufferedImage.TYPE_INT_RGB);
    		Graphics g = tag.getGraphics();
    		g.setColor(Color.RED);
    		g.drawImage(image, 0, 0, null); //绘制处理后的图
    		g.dispose();
    		ImageIO.write(tag, "jpg", os);
    		if(sizeList.get(i) == 50) {
    		  FileUtils.writeFile(os,new File(thumbnailDir+"/"+new50PicName));
    		  f = new File(thumbnailDir+"/"+new50PicName);
    		}else if(sizeList.get(i) == 100) {
    		  FileUtils.writeFile(os,new File(thumbnailDir+"/"+new100PicName));
    		  f = new File(thumbnailDir+"/"+new100PicName);
    		}else if(sizeList.get(i) == 200) {
    		  FileUtils.writeFile(os,new File(thumbnailDir+"/"+new200PicName));
    		  f = new File(thumbnailDir+"/"+new200PicName);
    		}else if(sizeList.get(i) == 400) {
    		  FileUtils.writeFile(os,new File(thumbnailDir+"/"+new400PicName));
    		  f = new File(thumbnailDir+"/"+new400PicName);
    		}
    		base64 = getBase64(f);
    		ResultInfo<?> rr = fileServiceImpl.uploadBase64(base64,f.getName());
    		if(rr.isSuccess()) {
    			AttachmentModel atta = (AttachmentModel)rr.getData();
    			if(atta.getPicName().indexOf('-') == -1) {//不带'-'的是商品主图
    				picType = 1;
    			}else if(atta.getPicName().indexOf("-1.") != -1
    					|| atta.getPicName().indexOf("-2.") != -1
    					|| atta.getPicName().indexOf("-3.") != -1
    					|| atta.getPicName().indexOf("-4.") != -1) {
    				picType = 2;
    			}else if((atta.getPicName().indexOf("-1-") == -1
    					||atta.getPicName().indexOf("-2-") == -1
    					||atta.getPicName().indexOf("-3-") == -1
    					||atta.getPicName().indexOf("-4-") == -1)
    					&& atta.getPicName().indexOf("-") != -1) {
    				picType = 3;
    			}else {
    				picType = 4;
    			}
    			ProductPic pic = new ProductPic();
    			BeanUtils.copyProperties(atta, pic);
    			pic.getPicName();
    			pic.setProductId(productNumber);
    			pic.setPicType(picType);
    			picList.add(pic);
    		}
    	} 
    	} catch (Exception e1) {
    		// TODO Auto-generated catch block
    		e1.printStackTrace();
    	}
    }
    int num = fileServiceImpl.insertPics(picList);
    if(num > 0) {
    	long endWrite = System.currentTimeMillis();
    	System.out.println("批量上传文件共计耗时:" +(endWrite-startWrite)/1000+"秒" );	
    	return "<h1 style='color:red;'>批量上传文件成功,非常棒,压缩上传文件总数量为:"+num+",共计耗时"+(endWrite-startWrite)/1000+"秒</h1>";
    }
    return "批量上传文件失败!";
    }

    更多JavaEE资料请关注下面公众号,欢迎广大开发者朋友一起交流。笔者电话(微信):18629374628

     

    展开全文
  • 工具资源批量上传和多文件上传我这里上传本地用的是QsunSyncQSunSync是使用C# + WPF开发的用于将本地文件同步到七牛云端空间的Windows客户端。该客户端的特点就是简单易用,而且方便增量同步。该软件支持如下功能:a...

    工具

    资源批量上传和多文件上传

    我这里上传本地用的是QsunSync

    QSunSync是使用C# + WPF开发的用于将本地文件同步到七牛云端空间的Windows客户端。该客户端的特点就是简单易用,而且方便增量同步。

    该软件支持如下功能:

    a 可以将指定文件夹中文件完整同步到目标空间,默认以文件在文件夹中的相对路径作为文件名

    b 可以在上传之前,对空间中同名文件进行检查,如果发现同名文件则根据强制覆盖条件的设置来决定是否覆盖

    c 可以给上传到空间的文件指定一个额外的前缀

    d 可以忽略文件名称相对于同步目录的相对路径,直接以文件本身的名字来命名

    e 可以根据上传的机器位置选择合适的入口域名

    f 可以根据文件的平均大小和实际带宽设置一个合理的并发数量

    g 可以根据实际带宽的情况,选择分片上传的片的大小,带宽越大,片大小可以选择越大,效率越高

    h 支持单文件断点续传,支持目录增量同步

    使用方式:

    首次打开软件的时候,需要进行帐号设置才能去“新建同步任务”,七牛云存储的文件上传使用一对密钥AK/SK来进行权限校验,这一对密钥在七牛云存储的后台里面是可以找到的。

    你可以直接到“帐号设置”里面点击“查看我的AS&SK”,这将自动帮你打开浏览器并导向到AK/SK的所在地,你直接拷贝,粘贴到本地的输入框里面就好了,输入完成之后,点击“保存”就可以了,当然如果你输入了错误的AK&SK,你会收到错误提示的,嘿嘿。

    帐号设置完成之后,就可以“新建同步任务”了,在“同步设置”的“基本设置”里面,你可以选择本地待同步目录和希望同步到的云端空间即可,如果需要更多的设置,可以看“高级设置”。

    设置完成之后,你就可以点击“开始同步”进行同步了。

    2091e9f8e8f97d5a9489f6691535900c.png

    thanks~

    展开全文
  • * 批量上传图片信息 */ public Boolean uploadifyImgs(MultipartFile[] imgs,String joinId){ boolean flag = true; try { for(int i=0;i<imgs.length;i++){ MultipartFile multipartFile = imgs[i...
  • //设置multiple,允许上传多张 <input type="file" name="roomImgIdFile" id="roomImgIdFile" class="default" onchange="liGeShi(this)" multiple> //方法liGeShi()用于判断文件格式 fun...
  • 批量上传图片并生成缩略图java实现

    热门讨论 2008-12-03 15:24:33
    使用jspsmartupload实现图片批量上传,并保存到服务器的指定路径,自动生成缩略图,与图片的路径相同。(需要导入jspsmartupload.jar,在工程下的WebContent\WEB-INF\lib中 )
  • 强大的java 在线编辑器 功能齐全 图片上传 图片批量上传都实现
  • springboot 图片上传、文件上传、 批量上传、 Base64图片上传 。源码
  • java批量上传图片并回显功能

    万次阅读 热门讨论 2017-06-14 19:31:03
    在电商的网站中,图片上传功能必不可少,小编在最近的项目中就有遇到了一个批量上传图片并且要回显的功能。可以说这是一个很常见的功能了,已经烂大街了,但是小编还是要认真的分析一下,以便日后用到。 二、上传...
  • java批量上传

    2017-07-21 16:02:17
    因为struts2的拦截器会拦截所有请求,在跳转到上传文件的servlet中时request请求会被转换为struts的请求。所以要去掉struts的请求。假如web.xml配置的拦截所有请求,可以修改这里,不拦截所有 s
  • java FTP批量上传图片

    千次阅读 2014-09-13 09:40:25
    public class FtpUtil { /** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号
  • 批量上传图片到图片服务器 package com.goldgrid.util.batchpic; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.SQLException; import java.text.Parse...
  • 基于HTML5的批量上传图片基于HTML5的批量上传图片基于HTML5的批量上传图片
  • 批量上传图片工具

    2017-01-19 18:39:00
    上传图片
  • wangeditor批量上传图片

    2018-10-26 16:43:49
    使用jsp+servlet,同时可以批量上传图片又可以防止Tomcat重启后图片消失
  • 图片批量上传

    2015-12-21 16:26:20
    图片批量上传
  • 批量上传图片项目源码 一个小的批量上传图片的项目,加入了百分比进度条显示上传进度功能

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,781
精华内容 5,512
关键字:

批量上传图片java

java 订阅