2009-07-13 21 views
1

私はasp.net C#を使用しています。私はフォルダに画像ファイルを保存しています。削除中です。削除中です。「このファイルはC:\ Inetpub \ wwwroot \ Admin \ Temp \ visible_Jul-13-2009_035606.pngにアクセスできません。画像を削除

fupAddImage.PostedFile.SaveAs(Server.MapPath("Temp") + @"\" + tempFilename); 
File.Delete(Server.MapPath("Temp") + @"\" + tempFilename); 
+0

特定の情報を追加します...イメージの保存方法と削除方法ここにコードの一部を掲載することができます。 –

+0

fupAddImage.PostedFile.SaveAs(Server.MapPath( "Temp")+ @ "\" + tempFilename); File.Delete(Server.MapPath( "Temp")+ @ "\" + tempFilename); – Xyz

+0

asp.netプロセスがファイルを削除する権限を持っていない可能性があります。 – iburlakov

答えて

2

がどのように画像を保存します:別のプロセスによって使用される」

コードを助けてください?イメージの保存に使用されるすべてのImageオブジェクトとStreamオブジェクトを廃棄したことを確認しましたか? ImageStream(およびStreamWriter)の両方がIDisposableを実装しているので、イメージが保存されたときにファイルが正しく閉じられるように、Disposeに電話するか、オブジェクトを作成するときにブロックを使用して設定する必要があります。

更新は:あなたが知っているいくつかのコードをポストする必要が

private static void SaveFile(Stream input, string fileName) 
{ 
    using (Stream output = File.OpenWrite(fileName)) 
    { 
     byte[] buffer = new byte[8192]; 
     int bytesRead; 
     do 
     { 
      bytesRead = input.Read(buffer, 0, buffer.Length); 
      output.Write(buffer, 0, bytesRead); 
     } while (bytesRead == buffer.Length); 
    } 
} 

// Pass the uploaded file data to the above method like this: 
SaveFile(fupAddImage.FileContent, Path.Combine(Server.MapPath("Temp"), tempFilename)) 
+0

downvoteについては何ですか?私のサンプルに何らかのエラーがあった場合、それを知ることは大変なので、修正することができます。 –

+0

わかりません。 +1 –

1

:あなたが試みることができることの一つは、それがどのように行われるかを正確により細かく制御を得るために、画像データを自分で保存することです確かに、ファイルはおそらくまだどこかで開いているので、あなたのアプリケーションはまだファイルロックを解放していません。開いているストリームを閉じて、削除する前にオブジェクトを指すファイルハンドルを破棄してみてください。

また、ファイルを指すすべてのハンドルを破棄してからOSがファイルを解放するのを待つ必要があります。

私は上記の問題を推測しています。ファイルを作成して次の行にあるファイルを削除している場合、OSはおそらく、ファイルハンドルとロックを解放したのではなく、おそらくファイルをディスクにフラッシュしていません。書き込みと削除の間に時間を置いて、もう一度削除できるかどうか確認してください。

0

トライタイピング中:

openfilesは理由を見つけるために、コマンドプロンプト(cmd.exeの)に

をfile_path_and_filename。

また、削除アクセス権があることを確認してください。

関連する問題