مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

آپلود فایل در Asp.net Core

  • چهارشنبه 27 تیر 1397
  • 11:25
تشکر میکنم

سلام
من با استفاده از فرم ajax  در Asp.net Core میخواهم فایل اپلود کنم ولی در کنترلر مقدار اون رو null نشون میده علتش چیه ؟


View

 <form asp-action="Create" id="Form_Id" enctype="multipart/form-data" asp-controller="ProjectFiles"
                  data-ajax="true"
                  data-ajax-method="Post"
                  data-ajax-mode="replace"
                  data-ajax-success="Create_Success"
                  data-ajax-failure="Create_Failure">
                <div class="form-group">

                        <div class="form-group">
                            <label asp-for="File_Name" class="control-label"></label>
                            <input asp-for="File_Name" class="form-control" />
                            <span asp-validation-for="File_Name" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="File_Title" class="control-label"></label>
                            <input asp-for="File_Title" class="form-control" />
                            <span asp-validation-for="File_Title" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="File_Description" class="control-label"></label>
                            <input asp-for="File_Description" class="form-control" />
                            <span asp-validation-for="File_Description" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="fileUpload" class="control-label"></label>
                            <input type="file" asp-for="fileUpload" class="form-control" />
                            <span asp-validation-for="fileUpload" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <input type="submit" value="Create" class="btn btn-default" />
                        </div>
                    </div>
                    </form>

Controller

public async Task<IActionResult> Create( UploadViewModel uploadViewModel)
        {    
            return View();
        }

پاسخ های این پرسش

تعداد پاسخ ها : 8 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 27 تیر 1397
  • 12:38

این لینک رو ببینید 

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • چهارشنبه 27 تیر 1397
  • 14:40

از این کد استفاده کردم  ، مدل و فایل آپلود شده رو به درستی  دریافت و ذخیره می کنه ولی میخوام بعد از اینکه عملیات با موفیقت انجام شد بره داخل بخش .success متد و پیام رو نمایش بده ولی یه صفحه خالی نشون میده که داخلش نوشته {success:true} 
علتش چیه ؟
JAVASCRIPT


    function uploadFiles(inputId) {
        var input = document.getElementById(inputId);
        var files = input.files;
        var formData = new FormData();

        for (var i = 0; i != files.length; i++) {
            formData.append("files", files[i]);
        }
        $.ajax({
            url: "/ProjectFiles/Create",
            data: { uploadViewModel: formData },
            processData: false,
            contentType: false,
            type: "POST",
            dataType: "json",
            success: function (result) {
                if (result.status) {
                    swal({

                        type: 'success',
                        title: "آپلود فایل",
                        text: " فایل با موفقیت آپلود شد",
                        showConfirmButton: false,
                        timer: 3000
                    });
                    $('#modal-info').modal('hide');
                    $(".modal-backdrop").remove();
                } else {
                    swal({

                        type: 'danger',
                        title: "آپلود فایل",
                        text: "آپلود فایل پروژه ناموفق بود ",
                        showConfirmButton: false,
                        timer: 3000
                    });
                }
            },
            error: function (_err) {
                swal("خطا", "خطلا در ارسال اطلاعات دوباره سعی کنید", "error");

            }
        });
    }

CONTROLLER

 public async Task<IActionResult> Create( ProjectFileUploadViewModel viewModel)
        {
            if (viewModel.fileUpload == null || viewModel.fileUpload.Length == 0)
                return Content("file not selected");
            
            var path = Path.Combine(
                        Directory.GetCurrentDirectory(), "wwwroot/UploadFile/ProjectFile",
                        viewModel.fileUpload.FileName);

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await viewModel.fileUpload.CopyToAsync(stream);
            }



            return Json(new { success = true });
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 27 تیر 1397
  • 15:23

مشکل در return متدتون است

در واقع داره مقدار بازگشتی رو نمایش میده

[HttpGet("WithProduces")]
[Produces("application/json")]
public Item GetWithProduces()
{
    return new Item { Id = 123, Name = "Hero" };
}

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 30 تیر 1397
  • 09:06

این راه هم جواب نداد و دوباره همون صفحه خالی با متن رو برمیگردونه 
این کد نباید به این صورت باشد؟

 return new Item { Id = 123, Name = "Hero" };
​
            return new Item (new { Id = 123, Name = "Hero" });

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 30 تیر 1397
  • 09:33

تفاوتی ندارند دروقع 

شما رشته json رو دستی بسازید return کنید شاید اصلا مشکل از اینجا نیست 

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 30 تیر 1397
  • 09:43

به این شکل ؟

  JsonResult jsonResult = new JsonResult(new { id = "123" });
            return jsonResult;

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 30 تیر 1397
  • 12:05

بله

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 30 تیر 1397
  • 12:08

به این صورت هم جواب نداد 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)