亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我正在嘗試使用 ajax 調用將上傳的文件從視圖發送到控制器,但該文件在控制器中被接收為 null

我正在嘗試使用 ajax 調用將上傳的文件從視圖發送到控制器,但該文件在控制器中被接收為 null

C#
RISEBY 2023-09-09 17:23:13
我使用 ajax 將上傳的文件從 html 視圖發送到控制器,但該文件在控制器中被接收為空。我嘗試使用 FormData 但沒有任何反應,或者可能我沒有正確使用它,當我使用 html.BeginForm() 發送文件時,它在控制器中正確讀取,但我不想使用表單,因為它在提交后打開另一個頁面下面是我的控制器public void Upload_SCN_CA_File(FormCollection formCollection){    if (Request != null)    {        HttpPostedFileBase file = Request.Files["UploadedFile"];        if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName))         {            string fileName = file.FileName;            Debug.WriteLine(fileName);            string fileContentType = file.ContentType;            byte[] fileBytes = new byte[file.ContentLength];            var data = file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));        }    }}下面是 JQuery ajax 調用$("#upload").on("click",function () {    $.ajax({        type: "POST",        url: "/Order/Upload_SCN_CA_File",        data: {            enctype: 'multipart/form-data'        },        success: function (response) {            if (response.result == false) {                swal("Error", response.message, "error");            }            else {                swal("Success", response.message, "success");            }        }    });});下面是我的 html 視圖<form>    <div class="row">        <div class="col">            <input name="UploadedFile" id="upfile" type="file" />        </div>    </div>    <div class="row">        <div class="col">            <div class="btn btn-primary rounded" id="upload" style="margin:8px">Upload</div><br>        </div>    </div></form>我希望文件能夠正確發送到控制器,以便我可以正確讀取它,但它被接收為空
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

您可以傳遞類似于以下代碼的數據。


   $("#form0").submit(function (event) {

        var dataString;

        event.preventDefault();

        event.stopImmediatePropagation();

        var action = $("#form0").attr("action");

        if ($("#form0").attr("enctype") == "multipart/form-data") {

            dataString = new FormData($("#form0").get(0));

            contentType = false;

            processData = false;

        } else {

            // regular form, do your own thing if you need it

        }

        $.ajax({

            type: "POST",

            url: action,

            data: dataString,

            dataType: "json",

            contentType: contentType,

            processData: processData,

            success: function (data) {


            },

            error: function (jqXHR, textStatus, errorThrown) {


            }

        });

    });


查看完整回答
反對 回復 2023-09-09
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

您必須使用FormData API在請求中傳遞表單內容。您可以在點擊處理程序中像這樣收集它

const form = $(this).closest('form').get(0)

const data = new FormData(form)

然后將以下內容傳遞給ajax調用


data: data,

processData: false,

contentType: false

代替


data: {

? ? enctype: 'multipart/form-data'

},

processData: false使 jquery 將未經修改的 FormData 實例傳遞給 XHR,這是文件上傳正常工作所必需的。contentType: false將使瀏覽器multipart/form-data自動設置內容類型。


FormData 現在可以在較舊的瀏覽器中運行,特別是 IE<10。


查看完整回答
反對 回復 2023-09-09
  • 2 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號