こんにちは、リストをパラメーターとして渡すことで、サーバーからファイルをダウンロードできますか?
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() 経由でファイルをダウンロードするにはどうすればよいですか?
GET ではなくPOSTを使用したいので、シリアライズ可能なオブジェクトのリストを渡すことができます (例: List files ) 。
クライアント側で 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でファイルをダウンロードする例が見つかりません