حذف تصویر موجود در مسیر wwwroot بصورت داینامیک در Asp Core
با سلام ، یک پروژه مدیریت کتابخانه دارم که میخوام در قسمت حذف کتاب بعد از عملیات حذف، تصویر کتاب هم که در مسیر upload/book ذخیره شده همزمان پاک بشه. بریک پوینت گذاشتم تا مسیر فولدر book میره ولی نام تصویر کتاب رو پیدا نمیکنه تا تصویر رو از فولدر مورد نظر حذف کنه و فکر میکنم با viewmodel کار نمیکنه ...البته عملیات حذف با موفقیت از دیتابیس انجام میشه ولی تصویر در مسیر wwwroot پاک نمیشه . ممنون میشم اگه با این روش راه دیگه ای هست راهنمایی کنید.
[HttpPost, ValidateAntiForgeryToken]
public IActionResult DeleteBookPost(int BookId,BookViewModel model)
{
if (BookId == 0)
{
TempData[ErrorMessage] = "عملیات با خطا مواجه شد";
return RedirectToAction(nameof(Index));
}
else
{
try
{
var path_normal = Path.Combine(_webHostEnvironment.WebRootPath, "upload\\book\\") + model.BookImage;
if (System.IO.File.Exists(path_normal))
{
System.IO.File.Delete(path_normal);
}
_context.bookUW.DeleteById(BookId);
_context.save();
TempData[SuccessMessage] = "حذف اطلاعات با موفقیت انجام شد";
return RedirectToAction(nameof(Index));
}
catch (Exception)
{
TempData[ErrorMessage] = "عملیات با خطا مواجه شد";
return RedirectToAction(nameof(Index));
}
}
پاسخ هوش مصنوعی
برای حذف تصویر کتاب از فولدر پس از حذف رکورد کتاب از دیتابیس در ASP.NET Core، اطمینان حاصل کنید که نام تصویر به درستی به متد بارگذاری می شود و مسیر تصویر درست ساخته می شود. همچنین بررسی کنید که آیا تصویر مورد نظر در مسیر مشخص شده وجود دارد یا خیر.
در اینجا یک مثال از اینکه چطور می توان تصویر را حذف کرد، ارایه می شود:
[HttpPost, ValidateAntiForgeryToken]
public IActionResult DeleteBookPost(int BookId, BookViewModel model)
{
if (BookId == 0)
{
TempData[ErrorMessage] = "عملیات با خطا مواجه شد";
return RedirectToAction(nameof(Index));
}
else
{
try
{
// ساخت مسیر فایل
var path_normal = Path.Combine(_webHostEnvironment.WebRootPath, "upload", "book", model.BookImage);
// بررسی وجود فایل
if (System.IO.File.Exists(path_normal))
{
System.IO.File.Delete(path_normal);
}
// حذف رکورد از دیتابیس
_context.bookUW.DeleteById(BookId);
_context.save();
TempData[SuccessMessage] = "حذف اطلاعات با موفقیت انجام شد";
return RedirectToAction(nameof(Index));
}
catch (Exception)
{
TempData[ErrorMessage] = "عملیات با خطا مواجه شد";
return RedirectToAction(nameof(Index));
}
}
}
اطمینان حاصل کنید که نام تصویر در model.BookImage
به درستی تنظیم شده است و همچنین پوشه upload/book
قابل دسترسی و اجازه نامه های کافی برای حذف فایل ها را دارد.
شما همونطوری که یک تصویر رو با دستور CopyTo می تونید روی روت سایت خودتون ذخیره کنید توسط دستور Delete هم میتونید تصویر رو حذف کنید.
کافیه نام تصویر رو از دیتابیس بگیرید و از دستور Delete برای حذف اون تصویر استفاده کنید.
public void deleteimage(int bookId)
{
var getimagename = _context.bookTbl.where(b=>b.bookId == bookId).select(b=>b.ImageName).SingleOrDefault();
if (getimagename.ImageName != "" || getimagename.ImageName != null)
{
var path = Path.Combine(_webHostEnvironment.WebRootPath, "upload\\imagepath\\") + deleteImg.BookImage;
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
}
در کد بالا تصاویر در wwwroot-->upload-->imagepath ذخیره شده اند.
متد بالا به صورت کلی تعریف شده و با توجه به نیاز پروژه میتونید تغییراتی در اون بدید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2