package com.eastcom.cartutor.admin.web.common.utils;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Component
public class fileUploadUtils {
private static String uploadPath;
@Value("${global.upload}")
public void setUploadPath(String uploadPath) {
fileUploadUtils.uploadPath = uploadPath;
}
/**
* 创建目录
* @return String
*/
public static String mkUploadPath(String dirPath){
String path = uploadPath + "/" + dirPath;
File file =new File(path);
if (!file.exists() && !file .isDirectory()) {
//目录不存在,创建
file.mkdirs();
}
return path;
}
/**
* 生成上传文件的文件名
* @param fileName
* @return String 文件名以:yyyyMMddHHmmss+"_"+文件的原始名称
*/
public static String mkFileName(String fileName){
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
return sf.format(new Date())+"_"+fileName;
}
/**
* 获取文件
* @param url
* @param request
* @param response
* @throws IOException
*/
@SuppressWarnings("resource")
public static void getFile(String url,HttpServletRequest request,HttpServletResponse response) throws IOException {
File file = new File(url);
if (file.isFile() && file.exists()){
long len = file.length();
response.setContentLength((int) len);
byte[] bytes = new byte[(int)len];
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
int r = bufferedInputStream.read( bytes );
if (r != len) {
throw new IOException("读取文件不正确");
}
bufferedInputStream.close();
OutputStream os = response.getOutputStream();
os.write(bytes);
os.flush();
os.close();
}
}
/**
* 保存文件
* @param request
* @return List<Map>
* @throws IllegalStateException
* @throws IOException
*/
public static List<Map<String, Object>> uploadFile(String dirPath,HttpServletRequest request) throws IllegalStateException, IOException{
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
List<Map<String, Object>> result = new ArrayList<>();
if(multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
MultipartFile file = multiRequest.getFile(iter.next());
if(file!=null && file.getSize()>0) {
//文件名
String fileName = mkFileName(file.getOriginalFilename());
//文件存储路径
String path = mkUploadPath(dirPath) + "/"+ fileName;
//储存文件
file.transferTo(new File(path));
Map<String, Object> fileInfo = new HashMap<>();
fileInfo.put("url", path);
result.add(fileInfo);
}
}
}
return result;
}
}
文件上传工具类
最新推荐文章于 2022-10-14 14:22:57 发布