Set multipart/form-data file upload bằng js data-action form như thế nào?

Thảo luận trong 'Lập Trình Website MVC5 & MVC6' bắt đầu bởi seolagi, 19/10/18.

  1. seolagi

    seolagi

    Vip Member

    Tham gia ngày:
    16/4/14
    Bài viết:
    519
    Đã được thích:
    31
    Điểm thành tích:
    28
    Chào mọi người, giúp mình làm sao sử dụng file upload để upload ảnh bìa lên web MCV asp.net c#. Nhưng mình không lấy được ảnh này trong controller của web MCV. Bạn nào giúp mình với.
    Code không báo lỗi gì cả. Chạy thì trả về dữ liệu NULL hicc. mình đã làm theo như trên mạng chỉ điền thêm enctype = "multipart/form-data" rùi mà vẫn không được. bạn nào biết truyền multipart/form-data file upload bằng js data-action form như thế nào? giúp mình với.
    Hình như nó không nhận cái new { enctype = "multipart/form-data" } của mình. Làm sao để truyền nó vào bằng js ajax được giúp mình với. Mình dùng code C# asp.net mô hình MVC
    Mã:
    @using (Html.BeginForm(new { enctype = "multipart/form-data" }))
    {
    @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
    @Html.EditorFor(m => m.seq, "STT", new { @class = "form-control" })
    <input id="anhbia" onchange="pressed()" type="file" name="upPhoto" />
    
    <button class="btn btn-default" data-action="Update">Lưu Cập nhật</button>
    <button class="btn btn-default" data-action="Delete">Xóa</button>
    <button class="btn btn-default" data-action="Index">Reset</button>
    <script>
    $(function () {
        $("button[data-action]").click(function () {
            var uploadFile = document.getElementById("anhbia");
            if (uploadFile.value.length == 0) {
                alert("Vui lòng chọn file hình ảnh bìa!");
                return;
            }
            var action = $(this).attr("data-action");
            this.form.action = "/new/tin-tuc/" + action;
        });
    });
    </script>
    }
    Trong controller ActionResult mình gọi ra như sau:
    Mã:
    var file = Request.Files["upPhoto"];
    Kết quả trả về bằng NULL. Sao mình không lấy được kết quả
     
    Cảm ơn đã xem bài:

    Set multipart/form-data file upload bằng js data-action form như thế nào?

    danh sách diễn đàn rao vặt gov chất lượng
  2. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,315
    Đã được thích:
    957
    Điểm thành tích:
    113
    Giới tính:
    Nam
    hi bạn, bạn sử dụng this.form.action để gọi action bằng js. Bạn truyền nó ở trên Html.BeginForm sẽ không trả được về giá trị đâu bạn ạ.
    Bạn xóa new { enctype = "multipart/form-data" }
    Và gọi trong script thêm this.form.encoding = "multipart/form-data" là được.
    Code bạn thành như sau:
    Mã:
    @using (Html.BeginForm())
    {
    @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
    @Html.EditorFor(m => m.seq, "STT", new { @class = "form-control" })
    <input id="anhbia" onchange="pressed()" type="file" name="upPhoto" />
    
    <button class="btn btn-default" data-action="Update">Lưu Cập nhật</button>
    <button class="btn btn-default" data-action="Delete">Xóa</button>
    <button class="btn btn-default" data-action="Index">Reset</button>
    <script>
    $(function () {
        $("button[data-action]").click(function () {
            var uploadFile = document.getElementById("anhbia");
            if (uploadFile.value.length == 0) {
                alert("Vui lòng chọn file hình ảnh bìa!");
                return;
            }
            var action = $(this).attr("data-action");
            this.form.encoding = "multipart/form-data";
            this.form.action = "/new/tin-tuc/" + action;
        });
    });
    </script>
    }
     
    seolagi thích bài này.
  3. seolagi

    seolagi

    Vip Member

    Tham gia ngày:
    16/4/14
    Bài viết:
    519
    Đã được thích:
    31
    Điểm thành tích:
    28
    Thanks ad, this.form.encoding = "multipart/form-data"; code good
     


Like và Share ủng hộ ITSEOVN