これを達成するために私はほとんど助けを必要としません.私のアプリでは、ユーザーはファイルをサーバーにアップロードし、それをブロブオブジェクトとして保存することができます.
私がやっていることは、以下のコードに示されています。
サーバー側では、コンテンツを応答に入れます: (このコードは、このブログ投稿WaterTalksに基づいて実装されています)
resp.setContentType("text/plain");
resp.setHeader("Content-Disposition", "attachment; filename=output.txt");
PrintWriter out = resp.getWriter();
out.println("This is the output content");
out.println("Probably something dynamic should go in here:::::");
PersistenceManager pm = null;
try {
pm = PMF.get().getPersistenceManager();
javax.jdo.Transaction transaction = pm.currentTransaction();
Extent e = pm.getExtent(WaterTalkFiles.class, true);
Iterator iter = e.iterator();
String returns = "";
WaterTalkFiles file = (WaterTalkFiles)iter.next();
Blob blob = file.getData();
byte[] buffer = blob.getBytes();
String s = new String(buffer);
out.println(s);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != pm)
pm.close();
}
クライアント側で、ユーザーが表示ボタンをクリックすると、ダウンロードするのではなく、ブラウザにファイルの内容を表示したい。
私のクライアント側のコードは次のとおりです。
showfilecontentButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
String link = "/FileUploadByWaterTalks";
container.add(new HTML("<a href=\"" + link + "\">ShowFile</a>"));
}
});
上記のコード (クライアント側のコード) は、ファイルのコンテンツを表示せず、ファイルをダウンロードしているだけです。しかし、ユーザーにダウンロードさせたくないので、コンテンツを表示したいのです。
そして、それを解決するには、ここで何かを構成する必要がありますか?
resp.setContentType("text/plain");
resp.setHeader("Content-Disposition", "attachment; filename=output.txt");
私の問題が何であるかを理解していただければ幸いです。これを達成するためのあなたの考えや解決策を自由に共有してください。
ありがとう。
更新しました
ここでの最初の回答に基づいて、コードの一部を変更しました。
更新されたコード セクションは次のとおりです。
resp.setHeader("Pragma", "no-cache");
final String url = "http://127.0.0.1:8888/FileUploadByWaterTalks";
String name = "output.txt";
Anchor link1 = new Anchor(name);
RootPanel.get().add(link1);
link1.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Frame f = new Frame(url);
f.setSize("600px", "400px");
f.getElement().getStyle().setBorderWidth(0, Unit.PX);
RootPanel.get().add(f);
}
});
しかし、それでもブラウザ自体にファイルを表示する代わりに、ファイルを保存するように求められます。