嗨,是否可以通过将列表作为参数传递来从服务器下载文件
使用RestyGWT和Jersey 1.7?
在服务器端,我有以下 Web 服务
@POST
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Path("/download")
public Response downloadFiles(@Context HttpServletResponse response, List<FileInfo> files) {
ZipFile zip = null;
String uuid = UUID.randomUUID().toString();
response.setHeader("Content-Disposition", "attachment; filename="
+ uuid + ".zip");
try {
zip = new ZipFile(response.getOutputStream());
File f = new File(ConfigurationLoader.getRealPath("/logo.png"));
zip.addFile(f, "");
zip.getOutputStream().flush();
zip.getOutputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
当我在浏览器中输入localhost:8080/Url/download时,它可以工作,但是我如何使用 Resty Gwt 或通过 Window.open() 下载文件?
我想使用POST而不是 GET,所以我可以传递可序列化对象的列表,例如: 列表文件。
我在客户端尝试了 RestyGWT:
@POST
@Produces("application/zip")
@Path("/download")
public void downloadFiles(List<FileInfo> files, MethodCallback<Response> response);
private static final Resource resource = new Resource(
GWT.getHostPageBaseURL() + "rest/files");
public static final FileRestService get() {
if (instance == null) {
instance = GWT.create(FileRestService.class);
((RestServiceProxy) instance).setResource(resource);
}
return instance;
}
但它不起作用,我找不到有关在 restygwt 中下载文件的示例