Моё приложение Asp.net MVC требует загрузки файла. В процессе загрузки я хотел бы манипулировать недавно загруженным файлом.
public ActionResult Edit(int id, FormCollection collection) {
Block block = userrep.GetBlock(id);
foreach (string tag in Request.Files) {
var file = Request.Files[tag] as HttpPostedFileBase;
if (file.ContentLength == 0)
continue;
string tempfile = Path.GetTempFileName()
file.SaveAs(tempfile);
// This doesn't seem to make any difference!!
// file.InputStream.Close();
if (FileIsSmallEnough(file)) {
// Will throw an exception!!
File.Move(tempfile, permanentfile);
} else {
GenerateResizedFile(tempfile, permanentfile);
// Will throw an exception!!
File.Delete(tempfile);
}
block.Image = permanentfile;
}
userrep.Save();
Проблема с этим фрагментом состоит в том, что любая попытка манипулировать первоначально загруженным файлом генерирует IOException («Процесс не может получить доступ к файлу, потому что он используется другим процессом.») Конечно, я могу обойти проблему, скорее копируя чем перемещать загруженный файл, но я все равно не могу удалить его, если у меня есть лучшая альтернатива.
Любой совет?
Duffy