废话(可跳过):
1、本文实现浏览器下载最主要用了HttpServletResponse response的response.getOutputStream()。将内容写入OutputStream流实现浏览器下载。用的chrome测试,暂未研究不同浏览器的问题。
1. java实现浏览器下载文件
content可以换成任意别的内容,也可以是文件流。
文件名字test.yaml可以修改
package com.example.controller;
import com.example.service.TestService;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author tl
* @date 2021/7/13 下午1:52
*/
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/download/test_yaml")
public void downloadTestYaml(HttpServletResponse response) {
response.setContentType("application/multipart/form-data");
response.setHeader("Content-Disposition", "attachment;filename=test.yaml");
String content = "any content";
try {
OutputStream os = response.getOutputStream();
os.write(content.getBytes());
os.flush();
os.close();
} catch (IOException ioe) {
ioe.printStackTrace()