【问题标题】:Receive image through ajax post request what should be the class to receive that image通过 ajax 发布请求接收图像 接收该图像的类应该是什么
【发布时间】:2018-09-07 06:54:56
【问题描述】:

这是我的ajax方法

 fl = new FormData();

    fl.append("abcd", $("#so_camera_click")[0].files[0]);
 debugger;  

    $.ajax({
        type: "POST",
        url: "../SaleOrder/AddSaleOrderToDB",
        dataType: "json",
        traditional: true,
        data: {

            f:fl,


        }});

而 C# 控制器是

id so_camera_click<input type="file" accept="image/*"/> 每次我调试 javascript 时 fl 变量中都有数据,但是当它到达后端 c# 控制器时它会变为 null

       public JsonResult AddSaleOrderToDB(HttpPostedFileWrapper f)
             {
             }

【问题讨论】:

    标签: c# ajax model-view-controller


    【解决方案1】:

    在您的 ajax 请求中, 改变data的值如下,

      $.ajax({
            type: "POST",
            url: "../SaleOrder/AddSaleOrderToDB",
            traditional: true,
            processData: false,
            contentType: false
            data: fl
            });
    

    使用正确、易读的字段名称。 您的控制器需要一个文件而不是 JSON 数据。

    【讨论】:

    • 如何添加“IFromFile”类
    • IFormFile是dotnet提供的,你用的是哪个版本的?
    • 在 Ajax 中,数据:fl
    • yes 在 ajax 请求类型中被提及为 post 并且它正在达到 c# 模式但丢失数据
    【解决方案2】:

    您需要发布 FileData 而不是 json

    此外,为了让控制器映射您发布的值,参数的名称必须与您用于 POST 的名称相同。

    所以为了让你的例子起作用,你必须做这样的事情

    fl = new FormData();
    
    fl.append("file", $("#so_camera_click")[0].files[0]);
    debugger;  
    
    $.ajax({
         type: "POST",
         url: "../SaleOrder/AddSaleOrderToDB",
         data: fl,
         contentType: false,
         processData: false
    });
    

    在你的控制器中

    public JsonResult AddSaleOrderToDB(HttpPostedFileWrapper file)
    {
    }
    

    【讨论】:

    • 非法调用这个错误是jquery产生的
    • 检查我更新的答案。将processDatacontentType 设置为false
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2017-02-25
    • 1970-01-01
    • 2021-12-14
    • 2014-07-17
    • 2015-03-26
    相关资源
    最近更新 更多