2011-07-16 10 views
1

jpgイメージの生データを特定のURL Send.aspxに送信するフラッシュアプ​​リケーションがあります。 Send.aspxでは、私はrequest.binaryread()を使用して合計要求長を取得し、バイト配列にデータを読み込みます。 次に、データをjpgファイルとしてサーバーに書き込みます。コードは次のとおりです。c#request.binaryreadからjpgイメージを書き込む方法

FileStream f = File.Create(Server.MapPath("~") + "/plugins/handwrite/uploads/" + filename); 
      byte[] data = Request.BinaryRead(Request.TotalBytes); 

      f.Write(data, 0, data.Length); 

      f.Close(); 

ファイルは作成されていますが、イメージはありません。これは、グラフィックビューアでは常に空として表示されます。どんな部分が欠けているのか。ファイルに書き込む前にまずjpgエンコーディングを使用するはずですか?事前にありがとう

+0

補足として、そこに長さチェックを追加する必要があります。そうでなければ、スワップファイルをアップロードすることで誰かがDOSになることができます。もちろん、小さなバッファをループすることは助けになりますが、既存のソリューションから*結果*。 –

答えて

0

まあ、ファイルストリームにはusingステートメントを使用する必要がありますが、それ以外は大丈夫です。

続行する方法についていくつかの提案...

は、それは、クライアントがデータを適切に提供されていないことは可能ですか?おそらくそれをbase64でエンコードされたデータとして提供していますか?

リクエストの本文からいくつかのデータを読んでいますか? (その可能性が台無しに。)

私はあなたが元のファイル対保存結局何をよく見てください:

  • は、彼らが同じ長さではありますか?そうでない場合、それはより長いですか?
  • 同じ長さの場合、MD5の合計が一致しますか?
  • バイナリファイルエディタ内で両方を見ると、まったく一致しますか?明らかな違いはありますか?
+0

ジョン、応答してくれてありがとう。データを送信するフラッシュファイルはすでにjpegファイルを正しくエンコードしています。私はphpコードでそれをテストし、jpgファイルに生データを正しく書き込むことができました。私が空のイメージを取得しているのと同じコードをC#で書くときだけです。どんなアイディアも大歓迎です。ありがとう –

+0

@amit:あなたは私が提案した手順を行ってきましたか?あなたは本当に違いを知るためにファイルを見る必要があります。 –

+0

はい。保存されている実際のファイルデータを確認してみましょう。私はしばらくこのことに戻るでしょう。 –