import com.tobacco.common.response.pojo.ResultUtils;
import org.apache.http.entity.ContentType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.util.DigestUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
/**
* 文件工具
* @Author ChenWenChao
*/
public class FileUtils {
/**设置文件路径*/
private static final String URL = "File/";
/**
* 文件上传
* @param filename 文件名
* @param file
* @param request
* @return
*/
public static Object fileUpload(String filename, MultipartFile file, HttpServletRequest request) {
try {
if (file.isEmpty()) {
return ResultUtils.error("文件为空","");
}
// 获取文件名
String fileName = file.getOriginalFilename();
// 设置文件存储路径
String filePath = request.getServletContext().getRealPath(URL);
String path = filePath + fileName;
File dest = new File(path);
// 检测是否存在目录
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();// 新建文件夹
}
file.transferTo(dest);// 文件写入
return ResultUtils.success("上传成功");
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ResultUtils.error("上传失败","");
}
/**
* 文件下载
* @param fileName 要下载的文件名(记得加后缀名)
* @param request
* @param response
* @return
*/
public static String fileDownload(String fileName, HttpServletRequest request, HttpServletResponse response) {
if (fileName != null) {
//设置文件路径
String path = request.getServletContext().getRealPath(URL);
File file = new File(path, fileName);
if (file.exists()) {
response.setContentType("application/force-download");// 设置强制下载不打开
try {
response.setHeader("Content-Disposition",
"attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
return null;
}
}