注意所有的编码都改成utf-8
同上传一样
新建一个FileInfo类 来接受前端的信息
import java.io.Serializable;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
@Component
public class FileInfo implements Serializable {
private static final long serialVersionUID = 1L;
private MultipartFile file;
public MultipartFile getFile() {
return file;
}
public void setFile(MultipartFile file) {
this.file = file;
}
}
Controller
// 文件下载
@GetMapping(value="/download")
public ResponseEntity<byte[]> download(HttpServletRequest request,@RequestParam("filename") String filename) throws Exception{
// 下载路径
String path = request.getServletContext().getRealPath("/file/");
File file = new File(path+File.separator+filename);
HttpHeaders headers = new HttpHeaders();
// 解决中文乱码
String downloadfile = new String(filename.getBytes("UTF-8"),"iso-8859-1");
// 以下载方式打开文件
headers.setContentDispositionFormData("attachment", downloadfile);
// 二进制流
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED);
}
html
<a href="download?filename=${fileinfo.file.originalFilename }">${fileinfo.file.originalFilename}</a>