base64 でファイルを取得しようとしても、ファイル転送は高速化されません。バイト単位で保存されているファイル (つまり base256) が base64 (64 の印刷可能文字) に変換されるため、逆です。転送するデータの最終的な量はより多くなります。
唯一の「勝利」は、ブラウザーが swf ファイルを別の呼び出しを行う代わりに、ページの一部としてそれをロードできる可能性があることです。これは、http 1.1 では問題にならないはずです。
他にこれを行う正当な理由がない限り、この種のプラクティスはお勧めしません。
データベースにswfファイルをブロブとして持っている場合、適切なコンテンツタイプを設定するサーブレットを作成し、タグなしでServletOutputStreamでファイル全体を書き込むことができます。HTML コードでは、固定ファイルではなくサーブレットを参照する必要があります。
それでもファイルを base64 に変換したい場合は、画像 API を使用するのではなく、バイナリ ファイルの標準的な方法でファイルを取得する必要があります。
http://www.javapractices.com/topic/TopicAction.do?Id=245
バイト配列を取得したら、エンコードを行うことができます。
File file = new File(imagePath);
log("File size: " + file.length());
byte[] result = null;
try {
InputStream input = new BufferedInputStream(new FileInputStream(file));
result = readAndClose(input);
}
catch (FileNotFoundException ex){
log(ex);
}
BASE64Encoder encoder = new BASE64Encoder();
imageString = encoder.encode(result);
そして readAndClose メソッド:
byte[] readAndClose(InputStream aInput){
byte[] bucket = new byte[32*1024];
ByteArrayOutputStream result = null;
try {
try {
result = new ByteArrayOutputStream(bucket.length);
int bytesRead = 0;
while(bytesRead != -1){
bytesRead = aInput.read(bucket);
if(bytesRead > 0){
result.write(bucket, 0, bytesRead);
}
}
}
finally {
aInput.close();
}
}
catch (IOException ex){
log(ex);
}
return result.toByteArray();
}
おそらく、コードを特定の状況に合わせて微調整し、最適化し、エラー処理を改善する必要があります...