1.MultipartFile上传
public static String upload(HttpServletRequest request, HttpServletResponse response)
throws IllegalStateException, IOException {
// 创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 图片名称
String ret = null;
// 判断 request 是否有文件上传,即多部分请求
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
if (file != null) {
// 取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
if (myFileName.trim() != "") {
// 获得图片的原始名称
String originalFilename = file.getOriginalFilename();
// 获得图片后缀名称,如果后缀不为图片格式,则不上传
String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
if (!fileTypes.contains(suffix)) {
return null;
} else {
ret = uploadFile(file.getOriginalFilename(), file.getBytes());
}
}
}
}
}
return ret;
}
public static String uploadFile(String filename, byte[] data) {
String res = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://cs.ananas.chaoxing.com/upload"); // 文件长传路径
ByteArrayBody fileBody = new ByteArrayBody(data, filename);
HttpEntity reqEntity = null;
try {
reqEntity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
.addPart("file", fileBody).setCharset(CharsetUtils.get("UTF-8")).build();
} catch (Exception e) {
}
httppost.setHeader("Connection", "close");
httppost.setEntity(reqEntity);
CloseableHttpResponse response = null;
try {
response = httpclient.execute(httppost);
res = EntityUtils.toString(response.getEntity(), "utf-8");
EntityUtils.consume(response.getEntity());
return res;
} catch (Exception e) {
return null;
} finally {
try {
HttpEntity e = response.getEntity();
EntityUtils.consume(e);
httppost.releaseConnection();
httpclient.close();
response.close();
} catch (Exception e) {
}
httppost.releaseConnection();
}
}
2.上传Base64File
public String uploadBase64File(String data, HttpServletRequest request) {
String result = "";
if (!StringUtils.isBlank(data)) {
String fileType = this.getBase64FileType(data);
String fileName = this.getFileName(fileType);
String newName = this.getFileName(fileType);// 上传之后的文件名
File file = new File("上传路径" + newName);
/* 如果不存在就创建 */
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
this.writeFile(this.base64StrToByte(data), file);
} catch (Exception e) {
}
result = "";
// attachmentService.save(attachment);
return result;
} else {
result = "上传文件不能为空!";
}
return result;
}
public String getBase64FileType(String data) {
String fileType = data.split(",")[0];
System.out.println(fileType);
if ("data:image/png;base64".equals(fileType)) {
return "png";
}
if ("data:image/gif;base64".equals(fileType)) {
return "gif";
}
if ("data:image/jpeg;base64".equals(fileType)) {
return "jpeg";
}
return "对不起,请上传正确的文件格式[.png,.gif,.jpg]";
}
public String getFileName(String fileType) {
return UUID.randomUUID().toString().replace("-", "") + "." + fileType;
}
@SuppressWarnings("deprecation")
public String getNewFileName(String fileName) {
// JDateTime jt = new JDateTime();
Date date = new Date();
// Integer siteId = getSiteId();
return File.separator + "upload" + File.separator + date.getTime() + File.separator + fileName;
}
private byte[] base64StrToByte(String data) {
byte[] b;
b = decode(data.split(",")[1]);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
return b;
}
private synchronized void writeFile(byte[] bytes, File file) throws Exception {
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(file));
stream.write(bytes);
stream.close();
}