آپلود فایل در Asp.net core چگونه است؟
با سلام هنگام آپلود تصویر در برنامه ، تصویر آپلود میشه ولی نه در خود ویندوز باز میشه نه در تگ img نشون داده میشه . لطفا راهنمایی کنید برای آپلود تصویر در Asp.net Core باید دقیقا چه کدی نوشته بشه. ممنون
پاسخ هوش مصنوعی
برای آپلود فایل در ASP.NET Core، شما به چند مرحله نیاز دارید. در اینجا یک مثال ساده آورده شده است که به شما نشان می دهد چگونه می توانید تصویر را آپلود کرده و آن را ذخیره کنید.
ابتدا، یک مدل برای فایل ایجاد کنید:
public class FileUploadModel
{
public IFormFile File { get; set; }
}
سپس در کنترلر خود، متد آپلود را ایجاد کنید:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Threading.Tasks;
public class FileUploadController : Controller
{
[HttpGet]
public IActionResult Upload()
{
return View();
}
[HttpPost]
public async Task Upload(FileUploadModel model)
{
if (model.File != null && model.File.Length > 0)
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/images", model.File.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await model.File.CopyToAsync(stream);
}
return RedirectToAction("UploadSuccess");
}
return View();
}
public IActionResult UploadSuccess()
{
return View();
}
}
سپس در ویوی آپلود، یک فرم برای آپلود تصویر ایجاد کنید:
@model FileUploadModel
برای نمایش تصویر آپلود شده، می توانید از تگ <img> استفاده کنید. فرض کنید تصویر در مسیر wwwroot/images ذخیره شده است:
<img src="~/images/@Model.File.FileName" alt="Uploaded Image" />
اطمینان حاصل کنید که پوشه images در wwwroot وجود دارد و قابلیت نوشتن روی آن فعال شده است.
با این مراحل، شما می توانید به راحتی تصاویر را آپلود و نمایش دهید.
برای آپلود عکس به صورت صحیح می تونید این لینک رو مطالعه بفرمایید.
همچنین کدهای مورد نیاز برای آپلود عکس رو در ادامه می نویسم. سعی کنید دقیقا مشابه عمل کنید.
یک کلاس برای آپلود فایل ایجاد کنید با کدهای زیر
public class UploadFile : IUploadfile
{
private readonly IHostingEnvironment _appEnvironment;
public UploadFile(IHostingEnvironment appEnvironment)
{
_appEnvironment = appEnvironment;
}
public string UploadFiles(IEnumerable<IFormFile> files,string uploadPath,string uploadthumbnailPath)
{
var upload = Path.Combine(_appEnvironment.WebRootPath,uploadPath);
var filename = "";
foreach (var file in files)
{
filename = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(file.FileName);
using (var fs = new FileStream(Path.Combine(upload, filename), FileMode.Create))
{
file.CopyTo(fs);
}
}
return filename;
}
}
پس از اون یک اینترفیس برای استفاده از کلاس در کنترلر ایجاد کنید
public interface IUploadfile
{
string UploadFiles(IEnumerable<IFormFile> files, string uploadPath, string uploadthumbnailPath);
}
و در کنترلر میتونید به شکل زیر استفاده کنید :
public async Task<IActionResult> UploadFile(IEnumerable<IFormFile> files)
{
string filename = _upload.UploadFiles(files, "path\\", "");
return Json(new { status = "success", message = "تصویر با موفقیت آپلود شد.", imagename = filename });
}
همچنین از کدهای جی کوئری زیر نیز در ویو استفاده کنید:
<form asp-area="AdminPanel" asp-controller="User" asp-action="Create" method="post" enctype="multipart/form-data">
@* تصویر *@
<div class="form-group">
<label asp-for="UserImage" class="control-label"></label>
<div class="form-horizontal">
<input asp-for="UserImage" type="file" id="files" name="files"/>
<input type="button" onclick="UploadImage()" id="btnupload" class="btn btn-info" value="آپلود و نمایش تصویر" />
</div>
<span asp-validation-for="UserImage" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="ایجاد" class="btn btn-success" />
<a asp-action="Index" class="btn btn-danger">بازگشت</a>
</div>
</form>
@section PanelScripts{
<script>
var UploadImage = function () {
var data = new FormData;
var file = $("#files").get(0);
var files = file.files;
for (var i = 0; i < files.length; i++) {
data.append('files', files[i]);
}
$.ajax({
type: "post",
url: '@Url.Action("UploadFile","ControllerName")',
data: data,
contentType: false,
processData: false,
}).done(function (result) {
if (result.status == "success") {
$("#imguser").attr('src', "\\upload\\userimage\\normalimage\\" + result.imagename);
alert("تصویر با موفقیت آپلود شد");
}
}).fail(function (result) {
alert("ایجاد خطا");
}
});
}
</script>
}
تشکر استاد عزیز . مشکل کاملا حل شد . واقعا تشکر میکنم
- آموزش استفاده از پلاگین گردونه شانس در 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 از کامپونت استفاده کرد
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2
- ارسال ایمیل و خبرنامه در Asp.net core چگونه است؟