2011-06-30 10 views
0

SpringのMVCでFileInputStreamを使用して、ファイルのチャンクをbyte []バッファに読み込みました。Spring FileInputStreamバッファに散発的に不正な文字が含まれています

次に、バッファをレスポンスストリームに書き込みます(FileCopyUtils.copyを使用)。

ストリームに書き込まれたレスポンス(ユーザーが受け取るもの)はファイルと似ていますが、欠点があります。

  1. ファイルデータの前には、ファイルの先頭に「2000」(引用符なし)があります。
  2. この「2000」の文字列が
  3. 私のファイル全体で散発的に存在しているファイルは、「0」

で終わるこれらのいずれから読み取られている元のファイルには存在しません。私は正確な出力ストリームを持っているので、誰も私はこれらを取り除く助けることができますか?

2000 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line o 
2000 
f data 
a line of data 
2000 

a line of data 
a line of data 
0 

それだけで次のようになります:

a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 
a line of data 

おかげでここ

は私の間違った出力に含まがどのように見えるかの例です!

答えて

2

私の推測では、ストリームがchunked transfer encodingとして指定されているとのFileInputStreamを行うには

+0

ありがとうございました。このエンコーディングを変更するにはどうすればよいですか?私は現在、フィドラーからテスト中です。追加する必要があるリクエストヘッダーがありますか?私は以下を指定しています:User-Agent:Fiddlerホスト:localhost:8443 Content-Length:109 Content-Type:application/x-www-form-urlencoded – kmehta

+0

フォローアップ:またはこのコードを変更する必要はありませんか?それは単なるフィドラー偽陽性ですか?エンコーディングをそのままにしておけば、私のアプリケーションは応答をどのように処理するのか知っていますか?私はiOSアプリケーションを作成していますが、NSURLConnection APIにこれがサポートされているかどうか疑問に思っています。それはすべきだと思われる。いずれかの方法。コメントありがとう。 +1 – kmehta

0

IOUtils.copy()Apache Commons IOからお試しいただけますか?

IOUtils.copy(new FileInputStream("some.file"), servletResponse.getOutputStream()); 

別(屈折率の不一致/行方不明フラッシュ、など)1つの場所からデータをコピーしながら、あなたがどこかにバグがあります。コードから伝えるのは難しいが、最も可能性が高いが既製と十分にテストされたストリームのコピーを使用します問題を特定するルーチン。

2

何もしないため、あなたは、単にそれを読んでいることです。これは、クライアントへの送信中に発生しています。おそらくラチェットフリークによって示唆されたようにチャンクされたエンコーディング。クライアントではHttpURLConnectionを使用し、それは目に見えないように処理します。

+0

+1ありがとうございます。答えはラチェット・フリークになり始めたが、私はその応答に感謝する。 iOSに関する知識はありますか?あなたNSURLConnectionがチャンクされたエンコーディングタイプをサポートするかどうか知っていますか? – kmehta

関連する問題