You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
software18/controller/CommonController.java

81 lines
2.9 KiB

4 weeks ago
package com.controller;
import com.annotation.IgnoreAuth;
import com.util.ApiResponse;
import org.springframework.util.ResourceUtils;
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.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;
/**
* @ClassName CommonController
* @Description
*/
@RestController
@RequestMapping("/common")
public class CommonController {
/**
*
*/
@IgnoreAuth
@RequestMapping("/uploadfile")
public ApiResponse<String> upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception {
if (file.isEmpty()) {
return ApiResponse.failed(400, "文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if (!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(), "/upload/");
if (!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime() + "." + fileExt;
File dest = new File(upload.getAbsolutePath() + "/" + fileName);
file.transferTo(dest);
return ApiResponse.success(fileName);
}
/**
*
*
* @throws IOException
*/
@IgnoreAuth
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(@RequestParam(value = "filename") String filename,
HttpServletRequest request,
HttpServletResponse response) throws IOException {
//需要下载的文件
String path = ResourceUtils.getURL("classpath:static").getPath() + "/" + filename;
//获取输入流
InputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
//转码,免得文件名中文乱码
filename = URLEncoder.encode(filename, "UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
//1.设置文件ContentType类型这样设置会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while ((len = bis.read()) != -1) {
out.write(len);
out.flush();
}
out.close();
}
}