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.
91 lines
2.7 KiB
91 lines
2.7 KiB
package cn.edu.hactcm.cotroller;
|
|
|
|
import cn.edu.hactcm.common.R;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import javax.print.DocFlavor;
|
|
import javax.servlet.ServletOutputStream;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.util.UUID;
|
|
|
|
@RestController
|
|
@Slf4j
|
|
@RequestMapping("/common")
|
|
public class CommonController {
|
|
@Value("${takeout.path}")
|
|
private String basePath;
|
|
|
|
/**
|
|
* 文件上传
|
|
* @param file
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@RequestMapping("/upload")
|
|
public R<String> upload(MultipartFile file, HttpServletRequest request){
|
|
//获取文件的格式后缀
|
|
String originalFilename = file.getOriginalFilename();
|
|
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
|
|
|
|
//uuid
|
|
String fileName = UUID.randomUUID().toString()+suffix;
|
|
|
|
//如果路径不存在创建路径
|
|
File dir = new File(basePath);
|
|
if (!dir.exists()) {
|
|
dir.mkdir();
|
|
}
|
|
|
|
//转存
|
|
try {
|
|
file.transferTo(new File(basePath+fileName));
|
|
} catch (IOException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
//将文件名返回浏览器,后面用户新增信息时随表单数据提交到服务器,写入数据库
|
|
return R.success(fileName);
|
|
}
|
|
|
|
/**
|
|
* 文件下载
|
|
* @param name
|
|
* @param response
|
|
*/
|
|
@GetMapping("/download")
|
|
public void download(String name, HttpServletResponse response){
|
|
|
|
try {
|
|
//输入流,通过输入流读取文件内容
|
|
FileInputStream fileInputStream = new FileInputStream(new File(basePath + name));
|
|
|
|
//输出流,通过输出流将文件写回浏览器
|
|
ServletOutputStream outputStream = response.getOutputStream();
|
|
|
|
response.setContentType("image/jpeg");
|
|
|
|
int len = 0;
|
|
byte[] bytes = new byte[1024];
|
|
while ((len = fileInputStream.read(bytes)) != -1){
|
|
outputStream.write(bytes,0,len);
|
|
outputStream.flush();
|
|
}
|
|
|
|
//关闭资源
|
|
outputStream.close();
|
|
fileInputStream.close();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
}
|