방금 파일을 삭제하려고하면 "프로세스가 다른 프로세스에서 사용 중이기 때문에 파일에 액세스 할 수 없습니다."라는 오류 메시지가 나타납니다. 업로드되었습니다 (파일 업로드 후 최소 몇 초가 지났기 때문에 작성을 마쳤습니다). 이것이 일어나는 이유는 무엇입니까? 추신 : 내가 만든 축소판은 문제없이 삭제되지만 원본은 어떻게 든 잠겨 있습니다. 당신의 MakeThumbnail 방법에서는 포토 툴 클래스 내부 정적 클래스를 사용하는 다른 프로세스에서 사용 중이므로 프로세스가 파일에 액세스 할 수 없습니다.
var FileExt = Path.GetExtension(photo.File.FileName);
var FilePath = Path.Combine(Server.MapPath("~/App_Data/" + photo.ClientId), photo.PhotoId.ToString()) + FileExt;
photo.File.SaveAs(FilePath);
var ThumbFilePath = Path.Combine(Server.MapPath("~/App_Data/" + photo.ClientId),photo.PhotoId.ToString() + "_thumbnail") + FileExt;
PhotoTools.MakeThumbnail(FilePath, ThumbFilePath, 0.15);
return RedirectToAction("Create");
...
public static void MakeThumbnail(string ImgIn, string ImgOut, double Percent)
{
Image img = Image.FromFile(ImgIn);
double Width = img.Width*Percent;
double Height = img.Height*Percent;
MakeThumbnail(ImgIn, ImgOut, (int)Width, (int)Height);
}
삭제 기능 ...
public ActionResult DeleteConfirmed(int id)
{
Client client = db.Clients.Find(id);
db.Clients.Remove(client);
db.SaveChanges();
if (Directory.Exists(Server.MapPath("~/App_Data/" + id)))
{
Directory.Delete(Server.MapPath("~/App_Data/") + id,true);
}
return RedirectToAction("Index");
}
다른 MakeThumbnail 코드를 표시하십시오. 확실히 당신은 수업을 처분하지 않을거야. – Haney
당신은 "내가 방금 업로드 한 파일을 지우려고 할 때"_ 분명히 설명 할 수 있습니다. 파일이나 미리보기 이미지의 코드에는 '삭제'가 없으므로 Windows 탐색기 나 이와 유사한 도구를 사용하여 이러한 파일을 삭제하는 것에 대해 이야기하는 것 같습니다. 그게 맞습니까? 아니면 ...? –
파일을 생성 한 동일한 요청 중에 파일을 삭제 하시겠습니까? –