1

基本的にユーザーがアップロードしたファイルのテーブルである GWT & App Engine アプリケーションのページがあります。

BlobServiceImpl の doGet 関数の最後の部分は、ユーザーが要求したときに BLOB を提供します。

    // got the entity already

    filename = (String) entity.getProperty("filename");

    resp.addHeader("Content-Disposition", "filename=" + filename);

    blobstoreService.serve(blobKey, resp);

上記のコードは、エンティティ メタデータからファイル名を取得し、HttpServletResponse でファイル名を設定してから、実際の blob を提供します。

私が抱えている問題は、ファイル名にスペースがあるファイルの場合、Firefox がファイル名を最初の単語のみに設定することです。スペースの後のすべてが除外されます。「My Amazing File.xls」というファイルが「My」として保存されてしまうので、これはかなり面倒です。

おそらく文字エンコーディングと関係がありますか?他のブラウザで正常に動作するのは奇妙です。

助けてくれてありがとう:)

4

2 に答える 2

1

Amy が言ったように、これは Firefox の問題であり、App Engine とは関係ありません。

これを変更する:

resp.addHeader("Content-Disposition", "filename=" + filename);

これに:

resp.addHeader("Content-Disposition", "filename=\"" + filename + "\"");

私の問題を修正しました。

ハッピーコーディング!

于 2012-08-09T09:53:01.743 に答える
0

" " が "%20" になるように、ファイル名に urlencode 関数を使用することをお勧めします。

于 2012-08-02T11:38:45.927 に答える