@PostMapping(value = "upload")
public AppResponse upload(@RequestParam("file") MultipartFile file,
@RequestParam("path") String uploadPath
) throws IOException {
appService.upload(file, uploadPath);
return AppResponse.success();
}
/**
* 文件上传
*
* @param file 文件
* @param uploadPath 上传的目标路径
* @return
*/
public static boolean upload(MultipartFile file, String uploadPath) throws IOException {
//文件名
String fileName = file.getOriginalFilename();
String path = uploadPath + fileName;
File dest = new File(path);
//创建文件目录
dest.getParentFile().mkdir();
//写入到目标目录
file.transferTo(dest);
return true;
}
*****************************************************************************
@GetMapping(value = "download")
public void download(@RequestParam("id") String id) throws IOException {
ServletRequestAttributes requestAttributes =
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = requestAttributes.getResponse();
appService.download(id, response);
}
/**
* 从appstore文件下载到应用管理
*
* @param id
* @param res
* @throws IOException
*/
public void download(String id, HttpServletResponse res) throws IOException {
//获取导出文件的信息
AppManagement appManagement = storeDao.queryById(id);
String packName = appManagement.getPackName();
String pathName = appManagement.getPathName();
// 信息解析
String type = new MimetypesFileTypeMap().getContentType(packName);
// 设置contenttype,即数据属于什么类型
res.setHeader("Content-type", type);
// 设置编码
String downloadFileName = new String(packName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
// 设置扩展头,当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
res.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
FileUtil.download(pathName, packName, res);
}
/**
* 文件下载
*
* @param sorcePath
* @param fileName
* @param res
* @return
* @throws IOException
*/
public static void download(String sorcePath, String fileName, HttpServletResponse res) throws IOException {
// 发送给客户端的数据
OutputStream outputStream = res.getOutputStream();
byte[] buff = new byte[1024];
// 读取filename
FileInputStream fileInputStream = new FileInputStream(new File(sorcePath + fileName));
BufferedInputStream bis = new BufferedInputStream(fileInputStream);
int i = bis.read(buff);
while (i != -1) {
outputStream.write(buff, 0, buff.length);
outputStream.flush();
i = bis.read(buff);
}
// IOUtils.copy(fileInputStream,outputStream);
bis.close();
fileInputStream.close();
outputStream.close();
}
文件上传与下载
最新推荐文章于 2024-10-16 10:13:45 发布