import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLEncoder;
/**
* @Author zyh
* @Date 2021/5/25 21:17
*/
@Slf4j
@RestController
public class DownloadController {
@RequestMapping("/download")
public void get(
HttpServletRequest request,
HttpServletResponse response
){
JSONObject jsonObject=new JSONObject();
jsonObject.put("1","hi");
startWriteToResponse( request, response, jsonObject.toJSONString().getBytes(), "流文件");
}
public static void startWriteToResponse(HttpServletRequest request, HttpServletResponse response, byte[] buffer, String downloadFileName){
try {
if (null != buffer && buffer.length > 0) {
String encodeFileName = URLEncoder.encode(downloadFileName, "UTF-8");
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-disposition","attachment; filename="+encodeFileName+".txt");
response.addHeader("Content-Length", "" + buffer.length);
OutputStream toClient = response.getOutputStream();
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
}
}catch (Exception e) {
log.error("下载数据出错,MSG:{}", e.getMessage());
e.printStackTrace();
}
}
}