hz-zhhq-app-service/greenH5modul/.svn/pristine/0c/0c314a5804f48fc7e881d87bd9d...

332 lines
9.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nationalelectric.greenH5;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.nationalelectirc.Constant.Constant;
import com.nationalelectirc.utils.RestResult;
import com.nationalelectirc.utils.Utils;
import com.nationalelectric.greenH5.utils.MD5Util;
import Decoder.BASE64Decoder;
import net.sf.json.JSONObject;
/**
* <b>概述</b><br>
* <p>
* <p>
* <b>功能</b><br>
* 图片上传
*
* @author MaYong
*/
@Controller
@RequestMapping("/greenFileUploadController")
public class GreenFileUploadController {
/**
* 文件上传
*
* @param file
* @param Request
* @param response
* @throws IOException
*/
/* @SuppressWarnings({ "unused" })
@RequestMapping(value = "/saveFileWeb", method = RequestMethod.POST)
@ResponseBody
public void savePersonPhoto(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request,
HttpServletResponse response) throws IOException {
String requestUrl = request.getRequestURL().toString();
String requestUri = request.getRequestURI().toString();
String contextPath = request.getContextPath();
// String url = requestUrl.replace(requestUri, "");
String url = PropertyUtil.getValue("webImageUrl");
// url = url + contextPath;
HashMap<String, String> ret = new HashMap<String, String>();
try {
List<HashMap<String, String>> companyInfoList = new ArrayList<HashMap<String, String>>();
String exName = "";
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String projectPath = request.getSession().getServletContext().getRealPath("");
System.out.println("== projectPath:" + projectPath);
if (projectPath.endsWith(File.separator)) {
projectPath = projectPath.substring(0, projectPath.length() - 1);
}
System.out.println("======= 111:" + projectPath);
String webappPath = projectPath.substring(0, projectPath.lastIndexOf(File.separator));
System.out.println("======= webappPath:" + webappPath);
// String directoryPath = webappPath + File.separator + "greenfile"
// + File.separator;
String directoryPath = PropertyUtil.getValue("saveImagePath");
System.out.println("======= directoryPath:" + directoryPath);
if (file.getOriginalFilename().lastIndexOf(".") != -1) {
exName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
}
exName = "." + exName.toLowerCase();
String fileName = uuid + exName;
String path = directoryPath;
// path = getParentDirPath(path);
File targetFile = new File(path, fileName);
// 濡拷濞村娲伴弽鍥ㄦ瀮娴犺埖妲搁崥锕<E5B4A5>鐡ㄩ崷顭掔礉娑撳秴鐡ㄩ崷銊ュ灟閸掓稑缂撻弬鍥︽婢讹拷
if (!targetFile.exists())
targetFile.mkdirs();
file.transferTo(targetFile);
String md5str = MD5Util.getFileMD5String(targetFile);
System.out.println("========== file md5:" + md5str);
ret.put("success", "200");
ret.put("filePath", url + "/greenfile/" + fileName);
System.out.println("======= filePath:" + url + "/greenfile/" + fileName);
ret.put("path", "/greenfile/" + fileName);
} catch (Exception e) {
}
response.getWriter().print(JSONObject.fromObject(ret).toString());
}
*/
/**
* 文件上传
*
* @param file
* @param Request
* @param response
* @throws IOException
*/
@SuppressWarnings({ "unused" })
@RequestMapping(value = "/saveFile", method = RequestMethod.POST)
@ResponseBody
public void saveFileBase64(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 取图片BASE64数据
byte buffer[] = getRequestPostBytes(request);
/*
* Base64.Decoder decoder = Base64.getDecoder(); byte[] str
* =decoder.decode(buffer); String jsonStr1 = new String(str); String
* jsonStr=URLDecoder.decode(jsonStr1, "utf-8");
*/
String bodyStr = new String(buffer,"UTF-8");
JSONObject jsonObject = JSONObject.fromObject(bodyStr);
String fileStr = jsonObject.getString("file");
String checkTime = jsonObject.getString("checkTime");
if(Utils.list.contains("greenFileUploadController/saveFile"+checkTime)){
return ;
}else{
Utils.list.add("greenFileUploadController/saveFile"+checkTime);
}
// 取图片路径相关信息
// String requestUrl = request.getRequestURL().toString();
// String requestUri = request.getRequestURI().toString();
// String contextPath = request.getContextPath();
// String url = requestUrl.replace(requestUri, "");
String url = "http://47.111.188.136:17001";
// url = url + contextPath;
HashMap<String, String> ret = new HashMap<String, String>();
try {
// List<HashMap<String, String>> companyInfoList = new ArrayList<HashMap<String, String>>();
// String exName = "";
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// String projectPath = request.getSession().getServletContext().getRealPath("");
//
// if (projectPath.endsWith(File.separator)) {
// projectPath = projectPath.substring(0, projectPath.length() - 1);
// }
//String webappPath = projectPath.substring(0, projectPath.lastIndexOf(File.separator));
// String directoryPath = webappPath + File.separator + "greenfile"
// + File.separator;
//String directoryPath = "/home/greenfile/";
// 写死路径 防止报Path Manipulation
String fileName = uuid + ".jpg";
String path = "/home/greenfile/";
// path = getParentDirPath(path);
File targetFile = new File(path);
// 检测目标文件是否存在,不存在则创建文件夹
if (!targetFile.exists())
targetFile.mkdirs();
// file.transferTo(targetFile);
GenerateImage(fileStr, path, getFilePath(fileName));
ret.put("success", "200");
ret.put("filePath", url + "/greenfile/" + fileName);
ret.put("path", "/greenfile/" + fileName);
} catch (Exception e) {
e.printStackTrace();
}
ret.put("success", "500");
response.getWriter().print(JSONObject.fromObject(ret).toString());
}
public String getFilePath(String path){
HashMap<String, String> map = new HashMap<String, String>();
map.put("a", "a");
map.put("b", "b");
map.put("c", "c");
map.put("d", "d");
map.put("e", "e");
map.put("f", "f");
map.put("g", "g");
map.put("h", "h");
map.put("i", "i");
map.put("j", "j");
map.put("k", "k");
map.put("l", "l");
map.put("m", "m");
map.put("n", "n");
map.put("o", "o");
map.put("p", "p");
map.put("q", "q");
map.put("r", "r");
map.put("s", "s");
map.put("t", "t");
map.put("u", "u");
map.put("v", "v");
map.put("w", "w");
map.put("x", "x");
map.put("y", "y");
map.put("z", "z");
map.put("A", "A");
map.put("B", "B");
map.put("C", "C");
map.put("D", "D");
map.put("E", "E");
map.put("F", "F");
map.put("G", "G");
map.put("H", "H");
map.put("I", "I");
map.put("J", "J");
map.put("K", "K");
map.put("L", "L");
map.put("M", "M");
map.put("N", "N");
map.put("O", "O");
map.put("P", "P");
map.put("Q", "Q");
map.put("R", "R");
map.put("S", "S");
map.put("T", "T");
map.put("U", "U");
map.put("V", "V");
map.put("W", "W");
map.put("X", "X");
map.put("Y", "Y");
map.put("Z", "Z");
map.put(":", ":");
map.put("/", "/");
map.put("\\", "\\");
String temp = "";
for (int i = 0; i < path.length(); i++) {
if (map.get(path.charAt(i)+"")!=null) {
temp += map.get(path.charAt(i)+"");
}
}
path = temp;
return path;
}
/**
* 描述:获取 post 请求的 byte[] 数组
*
* <pre>
* 举例:
* </pre>
*
* @param request
* @return
* @throws IOException
*/
public static byte[] getRequestPostBytes(HttpServletRequest request) throws IOException {
int contentLength = request.getContentLength();
if (contentLength < 0) {
return null;
}
byte buffer[] = new byte[contentLength];
for (int i = 0; i < contentLength;) {
int readlen = request.getInputStream().read(buffer, i, contentLength - i);
if (readlen == -1) {
break;
}
i += readlen;
}
return buffer;
}
// base64字符串转化成图片
public boolean GenerateImage(String imgStr, String filePath, String fileName) throws IOException { // 鐎电懓鐡ч懞鍌涙殶缂佸嫬鐡х粭锔胯鏉╂稖顢態ase64鐟欙絿鐖滈獮鍓佹晸閹存劕娴橀悧锟<E682A7>
// System.out.println(imgStr);
OutputStream out = null;
if (imgStr == null) // 图像数据为空
return false;
imgStr = imgStr.substring(imgStr.indexOf(",") + 1);
// System.out.println(imgStr);
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;
}
}
// 生成jpeg图片 以下操作防止报Path Manipulation
if (fileName.contains("../")) {
return false;
}
String path1 = "/home/greenfile/" + fileName;
if (path1.contains("../")) {
return false;
}
out = new FileOutputStream("/home/greenfile/"+getFilePath(fileName));
out.write(b);
out.flush();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
if (out != null) {
out.close();
}
}
}
}