0

私は、任意の PDF ファイルが J2EE Web サーバーからダウンロードされるようになるいくつかの要件に取り組んでいます。名前は次のようになります。

Xxxxxxxxxxxxxxxxxxx - Yyyyyyyyyy - Aaaaaaaaaaa - Bbbbbbbb ccc Ddddddddddddd - abc1234560 - 2009-03-26 – 235959.pdf

これで、RFC2183 のいくつかのセクションを読みました。

http://www.ietf.org/rfc/rfc2183.txt

例えば

tspecials' characters SHOULD be represented as a single 非token'のみを含む短い (長さ <= 78 文字) パラメータ値。ASCII 文字のみを含み、tspecials' characters, SHOULD be represented as 引用符付き文字列を含む短いパラメーター値。78 文字を超えるパラメータ値、または非 ASCII 文字を含むパラメータ値は、[RFC 2184] で指定されているようにエンコードする必要があります。

などなど。これらのRFCをすべて読まないと、何百万もの問題が発生する可能性があります...または、そのようなRFC仕様を処理するライブラリを選択します。Javaにそのようなものはありますか?それとも、私は偏執的ですか?実際には、このヘッダーを出力ストリームに書き込むだけで十分です:

String filename = "\"" + filename.replace("\"", "\\\"") + "\"";
addHeader("Content-Disposition", "attachment; filename=" + filename);
4

2 に答える 2

2

過去に同様の問題があり、次の解決策を見つけました。

最初の URL はhttp://myhost.com/file/1234のよう になります。1234 はファイル ID です。ファイル名はmy-very-long-file-name.pdf. したがって、HTTP ヘッダーを設定する代わりに、URL への呼び出しを次のようにリダイレクトします。

http://myhost.com/download/1234/my-very-long-file-name.pdf

マップされたサーブレット/download/は、URL から ID を取得し、ファイルをその出力ストリームに出力します。ただし、ブラウザは URL からファイル名を抽出し、その名前が URL に含まれているため、ファイルをダウンロードして保存するように提案します。これが長いファイル名でも機能することを願っています。

于 2011-08-31T12:43:43.493 に答える
1

RFC 2183 は関係ありませんが、RFC 6266 は関係があります。

また、78 文字の制限は http ではなく電子メールにのみ適用されるため、心配する必要はありません。

于 2011-08-31T14:39:24.597 に答える