我有一个简单的Spring java Web服务器。它执行一些在服务器上创建一些xml文件的处理。我想将这些文件传输到客户端计算机。
出于某种原因,我甚至不知道如何开始或搜索答案。它应该不难,因为我使用的是Spring,它们只是xml文件而不是二进制文件。有人可以指导我在搜索中寻找什么吗?
我在控制器中使用@RequestMapping。他们看起来像这样:
@Controller
@RequestMapping(value = "/export")
public class ExportController {
@RequestMapping(method = RequestMethod.GET)
public String getExport(ModelMap map) throws Exception {
return "export"
}
这将返回到jsp文件。
答案 0 :(得分:0)
最简单(但不是最好)的方法是将它们写入磁盘,然后在网页上提供指向它们的链接。
另一种方法是打开一个响应流并回写内容。
答案 1 :(得分:0)
有两种方法:
1)控制器方法:
指定控制器
@RequestMapping("/getFile")
public ResponseEntity<byte[]> getFile() throws IOException {
InputStream in = fetchFile("test.png");
final HttpHeaders headers = new HttpHeaders();
//Specify MediaType of the file you want to return
headers.setContentType(MediaType.IMAGE_PNG);
return new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED);
}
servlet-context.xml文件中的mvc注释:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>image/jpeg</value>
<value>image/png</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2)在服务器上下文中保存文件并公开浏览器的路径。
答案 2 :(得分:0)
这是我们在项目中使用的内容:
@RequestMapping(value = "/export", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public FileSystemResource downloadDocument(@PathVariable Long docId, HttpServletRequest request,
HttpServletResponse response) throws IOException, DocumentServiceException {
//set the default file name to be saved by user.
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename=XMLFileName");
return new FileSystemResource(new File("XMLfilePath"));
}
请注意,XMLFileName
是用户默认保存的文件名,XMLfilePath
是文件的物理路径。