0

Google App Engine にアプリケーションをデプロイしました。デスクトップで Java コードを使用し、ダウンロード リクエスト用のサーバー コードを使用して、サーバーからデータをアップロードおよびダウンロードしたいと考えています。

4

2 に答える 2

1

バイナリ データ (ファイルの内容) を格納するには、次の 3 つのオプションがあります。

  1. データストア エンティティのブロブ プロパティ
  2. ブロブストア
  3. Google クラウド ストレージ
于 2012-04-26T13:24:20.037 に答える
0

サーバーのどこにでもファイルを保存できます。パスを知っているだけです。

それを出力ストリームとしてどのように指示しますか?

これがあなたを助けることができるコードスニペットです。

File fileOnServer = new File("Hello.txt"); // Give full path where your file is located

byte[] file = new byte[(int) fileOnServer.length()];

FileInputStream fileInputStream = new FileInputStream(fileOnServer);
fileInputStream.read(file);

int contentLength = (int) file.length;
response.setContentLength(contentLength);
response.setHeader("Content-Disposition", "attachment; filename=\"Hello.txt\"");
out = response.getOutputStream();


int bytesWritten = 0;
byte[] buffer = new byte[1024];
while (bytesWritten < contentLength) {
    int bytes = Math.min(1024, contentLength - bytesWritten);
    System.arraycopy(file, bytesWritten, buffer, 0, bytes);
    if (bytes > 0) {
        out.write(buffer, 0, bytes);
        bytesWritten += bytes;
    } else if (bytes < 0);
}

ユーザーエンドにダウンロードしますか?

クライアント側のボタンにClickHandlerを追加して、onClickメソッドをオーバーライドすることができます。

public void onClick(ClickEvent event) {
        Window.open("UrlToYourServelet", "_blank", "null");
}

お役に立てれば!

編集

私は解決策を見つけました。このような無料のファイルホスティングサイトでファイルをアップロードできます。このサイトは、アップロードされたすべてのファイルのURLを提供します。したがって、サーブレットで、URLに対してHTTPリクエストを作成し、ファイルをダウンロードしてbyte[]、上記のコードに示すようにoutputStreamに書き込みます。

于 2012-04-27T06:47:23.260 に答える