2

BLOB コンテンツを含むテーブルがあり、そこにさまざまなファイル タイプを保存します(text, audio, image, etc)。を正常に取得した後byte []、[] をダウンロード ダイアログ ボックスに変換する方法がわかりません。
これが私のコードです

trns = session.beginTransaction();
Query query = session.createQuery("from FileDownload as fu where fu.Id =:Id");
query.setInteger("Id", id);
FileDownload fileDownload = (FileDownload) query.iterate().next();
byte[] byteArray = fileDownload.getFile();

上記のコードは正常に動作し、byte []. しかし、ダイアログが表示された状態でファイルに変換するために、さらに先に進む方法がわかりません。

誰でも私を助けてもらえますか?

4

2 に答える 2

11

mimeTypeファイルの内容がわかっていると仮定するとfilename、コンテンツ タイプと HTTP ヘッダーの Content-Disposition を設定できます。

バイト配列をに書き込むだけOutputStreamです:

    // The response from your servlet.
    HttpServletResponse resp;
    resp.setContentType(mimeType);
    resp.setHeader("Content-Disposition", "attachment;filename=" + filename);
    resp.getOutputStream().write(byteArray);
于 2012-12-21T11:49:39.220 に答える
1

バイト配列は、サーブレットからクライアントに送信できます。このトピックに関する多くの議論は、ここや他の場所で見つけることができます。

これがストリーミングの効率(コード付き)について議論している人々です。これは、サーブレットをURLにマップする方法についての説明です(例を含む)。

最後に行うことは、ユーザーがボタンをクリックしたときに、ユーザーをサーブレットのURLにリンクすることです。

また、バイト配列をストリーミングする前に、ヘッダーで提供できる追加情報を調べる必要があります。たとえば、mimeタイプを提供すると、ブラウザはファイルをどう処理するかについての手がかりを得ることができます。ブラウザでPDFを開き、ブラウザで画像を表示します。Excelでxlsファイルを開きます。

于 2012-12-21T11:58:00.957 に答える