دسته بندی ها
18:36 1398/07/05

آپلود فایل در Asp.net core چگونه است؟

مشخصات سوال کننده :
کاربر : AliNoori     امتیاز کاربر : 136     رتبه کاربر : 11
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 5204
هوش مصنوعی

پاسخ هوش مصنوعی

برای آپلود فایل در 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 وجود دارد و قابلیت نوشتن روی آن فعال شده است.

با این مراحل، شما می توانید به راحتی تصاویر را آپلود و نمایش دهید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 23:24 1398/07/26

برای آپلود عکس به صورت صحیح می تونید این لینک رو مطالعه بفرمایید.

همچنین کدهای مورد نیاز برای آپلود عکس رو در ادامه می نویسم. سعی کنید دقیقا مشابه عمل کنید. 

یک کلاس برای آپلود فایل ایجاد کنید با کدهای زیر

 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>
}

 

 

ویرایش شده در جمعه 7 مرداد 1401 ساعت 20:55:32
به این پاسخ امتیاز بدهید    2
امتیاز: 1664 رتبه: 1
پاسخ دهنده : AliNoori 23:24 1398/07/26

تشکر استاد عزیز . مشکل کاملا حل شد . واقعا تشکر میکنم 

به این پاسخ امتیاز بدهید    0
امتیاز: 136 رتبه: 11
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود