vue+Springboot下载文件
前端代码
<el-button type="primary" @click="dowload2('1662023440868上传测试.jpg')">下载</el-button>
js代码
dowload2(msg){
let href = "http://localhost:9090/myFiles/downloadFile?flag="+msg;
let downloadElement = document.createElement('a')
downloadElement.style.display = 'none'
downloadElement.href = href
document.body.appendChild(downloadElement)
// 点击下载
downloadElement.click()
},
后端代码 方法1
@RequestMapping("/downloadFile")
public void downloadFiles(@RequestParam("flag") String downUrl, HttpServletRequest request, HttpServletResponse response) {
downUrl = "D:/FileUpload/"+downUrl;
System.out.println("downUrl========"+downUrl);
OutputStream outputStream = null;
InputStream inputStream = null;
BufferedInputStream bufferedInputStream = null;
byte[] bytes = new byte[1024];
File file = new File(downUrl);
String fileName = file.getName();
System.out.println("本次下载的文件为" + downUrl);
// 获取输出流
try {
// StandardCharsets.ISO_8859_1 *=UTF-8'
// response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 以流的形式返回文件
response.setContentType("application/octet-stream;charset=utf-8");
inputStream = new FileInputStream(file);
bufferedInputStream = new BufferedInputStream(inputStream);
outputStream = response.getOutputStream();
int i = bufferedInputStream.read(bytes);
while (i != -1) {
outputStream.write(bytes, 0, i);
i = bufferedInputStream.read(bytes);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
if (bufferedInputStream != null) {
bufferedInputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
方法2
@RequestMapping("/getFile")
public void getFile(@RequestParam("flag") String flag, HttpServletResponse response) throws UnsupportedEncodingException {
System.out.println("getFile下载参数flag======"+flag);
Result res = new Result();
String path = "";
//response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(flag, "UTF-8"));
// 以流的形式返回文件
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(flag, "UTF-8"));
try{
System.out.println("下载文件flag====="+flag);
OutputStream os;
path = "D:/FileUpload/"+flag;
byte[] bytes = FileUtil.readBytes(new File(path));
os = response.getOutputStream();
os.write(bytes);
os.flush();
os.close();
System.out.println("path====="+path);
}catch (Exception e){
e.printStackTrace();
}
}
pom.xml文件
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.5</version> </dependency>

浙公网安备 33010602011771号