2012-02-19 9 views
19

私はこのコードを使用して、アップロードした画像を保存しています:stream.CopyTo - ファイルが空です。 asp.net

画像は、その先のフォルダに保存され
using (var fileStream = File.Create(savePath)) 
{ 
    stream.CopyTo(fileStream); 
} 

、それが0キロバイト、空です。ここで何が間違っている可能性がありますか?私はストリームをチェックしました。コピーする前の長さと空ではありません。

+2

元のストリームをロードするコードを確認できますか?また、ストリームstream.Seek(0、SeekOrigin.Begin);を挿入してみてください。コピーの直前に、元のストリームの先頭にいることを確認してください。 – dash

答えて

52

コードに問題はありません。あなたが「ストリームをチェックしました。コピーする前の長さとそれが空でない」と言うと、コピーする前にストリームの位置について私は不思議に思います。

すでにソースストリームを1回消費していた場合は、ストリームの長さがゼロではないにもかかわらず、その位置はストリームの最後にある可能性があります。したがって、コピーする必要はありません。

ストリームは(それがMemoryStreamまたはFileStreamおよび他の多くのためになる)シーク可能である場合には、単にコピーする前に

stream.Position = 0 

を入れてみてください。これにより、ストリームの位置が最初にリセットされます。つまり、ストリーム全体がコードによってコピーされます。

+2

+1 - 非常に驚くでしょう:-) – dash

+2

毎日新しいことを学びます!確かにそれだった。どうもありがとう! :) – user1121487

+0

+1そのヒント! –

関連する問題