Commit 7fc710e6 authored by hezhen's avatar hezhen

添加多图上传

parent 70c9a5f1
package com.xxfc.platform.universal.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/3 17:51
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ImgDTO {
@ApiModelProperty("图片base64")
private String imgFile;
@ApiModelProperty("图片名称")
private String fileName;
@ApiModelProperty("图片类型:jpg,png")
private String type;
}
package com.xxfc.platform.universal.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/3 17:51
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UploadImgDTO {
@ApiModelProperty("路径前缀")
private String prefix;
@ApiModelProperty("图片")
private List<ImgDTO> imgs;
}
package com.xxfc.platform.universal.utils;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import java.io.*;
;
public class ImgBase64Util {
public static void main(String[] args) {
String imgFile = "d:\\Pictures\\1.jpg";// 待处理的图片
String imgbese = getImgStr(imgFile);
System.out.println(imgbese.length());
System.out.println(imgbese);
String imgFilePath = "d:\\Pictures\\0094.jpg";// 新生成的图片
generateImage(imgbese, imgFilePath);
}
/**
* 将图片转换成Base64编码
* @param imgFile 待处理图片
* @return
*/
public static String getImgStr(String imgFile) {
// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return new String(Base64.encodeBase64(data));
}
/**
* 对字节数组字符串进行Base64解码并生成图片
* @param imgStr 图片数据
* @param imgFilePath 保存图片全路径地址
* @return
*/
public static boolean generateImage(String imgStr, String imgFilePath) {
//
if (imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}
\ No newline at end of file
...@@ -3,10 +3,16 @@ package com.xxfc.platform.universal.controller; ...@@ -3,10 +3,16 @@ package com.xxfc.platform.universal.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil; import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.universal.dto.ImgDTO;
import com.xxfc.platform.universal.dto.UploadImgDTO;
import com.xxfc.platform.universal.service.UploadService; import com.xxfc.platform.universal.service.UploadService;
import com.xxfc.platform.universal.utils.ImgBase64Util;
import com.xxfc.platform.universal.utils.PublicMsg; import com.xxfc.platform.universal.utils.PublicMsg;
import com.xxfc.platform.universal.vo.Ueditor; import com.xxfc.platform.universal.vo.Ueditor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -14,6 +20,11 @@ import org.springframework.web.bind.annotation.*; ...@@ -14,6 +20,11 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
...@@ -71,7 +82,8 @@ public class UploadController{ ...@@ -71,7 +82,8 @@ public class UploadController{
@RequestMapping(value = "/app/unauth/uploadFiles", method = RequestMethod.POST) @RequestMapping(value = "/app/unauth/uploadFiles", method = RequestMethod.POST)
public JSONObject uploadFiles( public JSONObject uploadFiles(
@RequestParam("files") MultipartFile[] files, @RequestParam("files") MultipartFile[] files,
@RequestParam(value = "prefix",defaultValue = "app")String prefix @RequestParam(value = "prefix",defaultValue = "app")String prefix,
HttpServletRequest request
)throws Exception { )throws Exception {
if(files!=null&&files.length>0){ if(files!=null&&files.length>0){
String urls=""; String urls="";
...@@ -98,6 +110,36 @@ public class UploadController{ ...@@ -98,6 +110,36 @@ public class UploadController{
} }
@PostMapping( value = "/app/unauth/uploads")
public JSONObject uploads(@RequestBody UploadImgDTO uploadimgDTO)throws Exception {
if (uploadimgDTO==null){
JsonResultUtil.createDefaultFail();
}
String prefix=uploadimgDTO.getPrefix();
if(StringUtils.isBlank(prefix)){
prefix="app";
}
List<ImgDTO> imgDTOS=uploadimgDTO.getImgs();
List<Map<String,Object>> list=new ArrayList<>();
if (imgDTOS.size()>0){
for (ImgDTO imgDTO:imgDTOS){
String imgbese =imgDTO.getImgFile();
String fileName =imgDTO.getFileName();
Map<String,Object> map=new HashMap<>();
if(StringUtils.isNotBlank(imgbese)){
String url=uploadService.uploadImg(imgbese,prefix);
map.put("imgUrl",url);
map.put("fileName",fileName);
list.add(map);
}
}
}
return JsonResultUtil.createSuccessResultWithObj(list);
}
//以下是图片上传的方法 //以下是图片上传的方法
@RequestMapping(value="/app/unauth/ueditor") @RequestMapping(value="/app/unauth/ueditor")
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.universal.service; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.universal.service;
import com.github.wxiaoqi.security.common.util.process.SystemConfig; import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import com.xxfc.platform.universal.constant.RedisKey; import com.xxfc.platform.universal.constant.RedisKey;
import com.xxfc.platform.universal.utils.ImgBase64Util;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
...@@ -56,6 +57,37 @@ public class UploadService { ...@@ -56,6 +57,37 @@ public class UploadService {
return realFileRelPath; return realFileRelPath;
} }
/**
* 写入上传文件,返回相对路径
* @param imgFile
* @return
*/
public String uploadImg(String imgFile,String prefix) throws Exception{
//创建本日存放目录
DateTime now = DateTime.now();
String dirPathToday = "/"+prefix+ "/" + now.toString(DEFAULT_DATE_TIME_FORMATTER);
String redisNoKey = RedisKey.UPLOAD_FILE_NO_PREFIX + now.toString(DEFAULT_DATE_TIME_FORMATTER);
Long no = redisTemplate.opsForValue().increment(redisNoKey);
if(no.equals(1l)){
redisTemplate.expire(redisNoKey,1, TimeUnit.DAYS);
}
String realFileRelPath = dirPathToday;
//文件存放路径
String filePath = baseUploadPath + realFileRelPath;
File file=new File(filePath);
if(!file.exists()){
file.mkdirs();
}
realFileRelPath=filePath + "/" + no + ".jpg";
//将文件写入指定位置
ImgBase64Util.generateImage(imgFile,realFileRelPath);
realFileRelPath= SystemConfig.XXMP_URL+realFileRelPath;
return realFileRelPath;
}
/** /**
* @Method: makeFileName * @Method: makeFileName
* @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称 * @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment