2012-01-24 29 views
0

jpegイメージを適切な権限設定を持つアップロードフォルダに保存しようとしています。ファイルが保存されていることをテストすると(たとえば:images/uploads/Winter.jpg)、ブラウザで画像を表示しようとすると、画像を表示しない場合は画像を表示しません。asp.net image jpegが正しく保存されない

ファイルがディスクに保存される前に正しくエンコードされていないと思いますが、ファイルの保存、エンコードにはあまり経験がありません。以下のコードは大丈夫ですか、またはディスクに保存する前にアップロードされているファイルをエンコードする必要がありますか?

String imgPath = "newsletter\\images\\uploads\\"; 

String filename = System.IO.Path.GetFileName(upload.PostedFile.FileName); 

filepath = imgPath + filename; 

filepath = Request.PhysicalApplicationPath + filepath; 
upload.PostedFile.SaveAs(filepath); 

ファイルが正しいフォルダに保存されますが、サイズだけで150bytesされます。ファイルを参照してイメージビューアで表示しようとすると、正しく表示されません。

+0

ファイルのサイズはどのくらいですか?あなたはボタンクリックイベントの中にそれを持っていますか? –

+0

サーバー上のフォルダを直接参照すると、そこにイメージがありますか?あなたはイメージビューアでそれを見ることができますか? – Oded

+0

@ShadowWizard - この関数は、FileUploadコントロールがsaveImage関数に 'upload'として渡されて、別の関数から呼び出されます。 – TGuimond

答えて

1

エンコーディングは問題ではありません。生データは変更されません。ただし、ブラウザがすべてのデータを送信していないか、アップロードコントロールがデータを保存する前に削除している可能性があります。

)あなたは.SaveAsを(呼び出していることを確認してください前のページには、アンロード、および前に、追加のポストバックを開始します。私たちはもっと助けるために、より包括的なコードを見る必要があると思う。

もう1つの注意点 - 既存のファイル拡張子を使用できるようにすることで、ユーザーは.aspxファイルをアップロードできるようになります。その後、要求によって実行できます。安全なファイル名は、GUIDとホワイトリストに登録されたファイル拡張子です。浄化されていないアップロードされたパス情報を使用することは非常に危険です。ファイル名を再使用する場合は、英数字でそれらを浄化してください。

関連する問題