package com.jq.nfzl.system.controller;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.jq.nfzl.web.entity.NfAttachment;
import net.coobird.thumbnailator.Thumbnails;
@Controller
public class ImgController {
@Value("${file.savePath}")
private String dir;
// @Autowired
// private NfInfoMapper m;
//
// @Autowired
// private NfAttachmentDao n;
/**
* 图片获取
* @param response
* @param path
* @throws FileNotFoundException
* @throws IOException
*/
@RequestMapping("/img")
public void getImg(HttpServletResponse response, String path) throws FileNotFoundException, IOException {
try {
if (StringUtils.isEmpty(path) || path.indexOf("../") > -1) {
response.sendRedirect("/static/img/noImg.jpg");
return;
}
BufferedImage bi = null;
if("D:".equals(path.substring(0, 2))){
bi = ImageIO.read(new File(path));
}else{
bi = ImageIO.read(new File(dir + path));
}
bi = Thumbnails.of(bi).size(800, 600).asBufferedImage();
String ext = path.substring(path.lastIndexOf(".") + 1);
if ("jpg".equalsIgnoreCase(ext) || "jpeg".equalsIgnoreCase(ext)) {
response.setContentType("image/jpg");
ImageIO.write(bi, "jpg", response.getOutputStream());
} else if ("png".equalsIgnoreCase(ext)) {
response.setContentType("image/png");
ImageIO.write(bi, "png", response.getOutputStream());
} else if ("gif".equalsIgnoreCase(ext)) {
response.setContentType("image/gif");
ImageIO.write(bi, "gif", response.getOutputStream());
} else {
response.sendRedirect("/static/img/noImg.jpg");
}
} catch (IOException e) {
response.sendRedirect("/static/img/noImg.jpg");
}
}
/**
* 图片上传
* @param files
* @return
* @throws IllegalStateException
* @throws IOException
*/
@RequestMapping("/uploadImg")
@ResponseBody
public List<NfAttachment> uploadImg(HttpServletRequest request, HttpServletResponse response, MultipartFile[] files) throws IllegalStateException, IOException {
response.setHeader("Access-Control-Allow-Origin", "*");
List<NfAttachment> result = new ArrayList<>();
String dataDir = new SimpleDateFormat("yyyyMMdd").format(new Date());
File path = new File(dir + dataDir + "/");
if (!path.exists()) {
path.mkdirs();
}
for (MultipartFile file : files) {
NfAttachment attachment = new NfAttachment();
String originalFilename = file.getOriginalFilename();
String filePath = dataDir + "/" + UUID.randomUUID().toString().replaceAll("-", "") + "."
+ originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
file.transferTo(new File(dir + filePath));
attachment.setAttachmentName(originalFilename);
attachment.setAttachmentPath(filePath);
result.add(attachment);
}
return result;
}
// @RequestMapping("/testImg")
// @ResponseBody
// public Result test() throws IOException {
// String ddd = "D:\\nfzlFiles\\";
// String prev = "20180323";
// File file = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹");
// for (File dir : file.listFiles()) {
// String cm = dir.getName();
// for (File f : dir.listFiles()) {
// String u = f.getName().substring(0, f.getName().lastIndexOf(".")).replaceAll("\\d", "");
// List<NongfangInfo> infos = m.getNf(u, cm);
// if (infos.size() == 0) {
//
// } else if (infos.size() > 1) {
// System.out.println();
// } else {
// String fileName = UUID.randomUUID().toString().replaceAll("-", "") + f.getName().substring(f.getName().lastIndexOf("."));
// File tmp = new File(ddd + prev + "/" + fileName);
// copyFile(f, tmp);
// NongfangInfo info = infos.get(0);
// NfAttachment attachment = new NfAttachment();
// attachment.setAttachmentName(f.getName());
// attachment.setAttachmentPath(prev + "/" + fileName);
// attachment.setAttachmentType(3);
// attachment.setRelId(info.getId());
// n.insertNfAttachment(attachment);
// f.delete();
// }
// }
// }
// return Result.SUCCESS;
// }
//
// public static void main(String[] args) {
// File file = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹");
// for (File dir : file.listFiles()) {
// String cm = dir.getName();
// for (File f : dir.listFiles()) {
// System.out.println(f.getName().substring(0, f.getName().lastIndexOf(".")).replaceAll("\\d", ""));
// }
// }
// }
//
// public void copyFile(File fromFile,File toFile) throws IOException{
// FileInputStream ins = new FileInputStream(fromFile);
// FileOutputStream out = new FileOutputStream(toFile);
// byte[] b = new byte[10*1024];
// int n=0;
// while((n=ins.read(b))!=-1){
// out.write(b, 0, n);
// }
//
// ins.close();
// out.close();
// }
}