Spring 从服务器下载 REST 文件
Spring REST file download from server
我有一个 Spring REST 应用程序,其中一个端点是下载 link,下载的文件是动态生成的。
除了文件名错误外,一切正常。
控制器的相关部分如下:
@RestController
@RequestMapping("/export")
public class ExportREST {
@RequestMapping(method=RequestMethod.GET)
public void export(HttpServletResponse response) throws Exception {
//stuff omitted...
writeCsvResponse(response);
}
private void writeCsvResponse(HttpServletResponse response) throws IOException {
String fileName = "db.export."+dateFormat.format(new Date());
response.setContentType( "application/octet-stream" );
response.setHeader( "Content-Disposition:", "attachment;filename=" + "\"" + fileName + "\"" );
//write stuff to response...
response.setContentLength(totalLength);
response.setBufferSize(1024);
response.flushBuffer();
pout.close();
}
}
所以,我想要的是一个带有生成时间戳的文件名,但实际上文件名总是 export
,大概是从 URL.
中获取的
我是不是漏掉了什么?
"Content-Disposition:" 末尾有一个冒号。没有它,应该选择文件名。
也许这对你有帮助
if (mimeType == null) {
// set to binary type if MIME mapping not found
mimeType = "application/octet-stream";
}
System.out.println("MIME type: " + mimeType);
// set content attributes for the response
response.setContentType(mimeType);
Servlet 的更多详细信息:
我有一个 Spring REST 应用程序,其中一个端点是下载 link,下载的文件是动态生成的。
除了文件名错误外,一切正常。
控制器的相关部分如下:
@RestController
@RequestMapping("/export")
public class ExportREST {
@RequestMapping(method=RequestMethod.GET)
public void export(HttpServletResponse response) throws Exception {
//stuff omitted...
writeCsvResponse(response);
}
private void writeCsvResponse(HttpServletResponse response) throws IOException {
String fileName = "db.export."+dateFormat.format(new Date());
response.setContentType( "application/octet-stream" );
response.setHeader( "Content-Disposition:", "attachment;filename=" + "\"" + fileName + "\"" );
//write stuff to response...
response.setContentLength(totalLength);
response.setBufferSize(1024);
response.flushBuffer();
pout.close();
}
}
所以,我想要的是一个带有生成时间戳的文件名,但实际上文件名总是 export
,大概是从 URL.
我是不是漏掉了什么?
"Content-Disposition:" 末尾有一个冒号。没有它,应该选择文件名。
也许这对你有帮助
if (mimeType == null) {
// set to binary type if MIME mapping not found
mimeType = "application/octet-stream";
}
System.out.println("MIME type: " + mimeType);
// set content attributes for the response
response.setContentType(mimeType);
Servlet 的更多详细信息: