使用多个参数将图像上传到MVC 5 Controller

时间:2016-08-10 14:27:18

标签: jquery html asp.net-mvc asp.net-core-mvc

我目前正在开发使用ASP.NET MVC 5上传图像。我在将图像与视图模型一起上传时遇到了一些问题。仅上传图像的效果如下。这是我的控制器。

[HttpPost("fileUpload")]
public async Task<JsonResult> fileUpload(IFormFile file)
{            
    try
    {
        //MY JOB IS HERE
    }catch(Exception ex){
        //SOME EXCEPTION WILL BE HERE
    }
}

这是javascript:

var files = new FormData();
files.append('file', updfile.files[0]);      

$.ajax({
    url: url,
    data:files,
    cache: false,
    contentType: false,
    processData: false,
    type: 'POST',
    success: function (data) {
        alert(data.responseText);
        displayLoading(false);
    },
    error: function (err) {
        alert(err.responseText);
        document.getElementById("image").src = "#";
        displayLoading(false);
    }
});

和HTML:

<div class="col-md-6">
    <form id="frmABC" method="post" enctype="multipart/form-data">
        <div id="loading" name="loading">LOADING</div>
        <input type="file" id="files" name="files" onchange="file_OnChange('@ServerLink.configCollection["FileUploadApiLink"]',this,'@Model.SysKey')" />                                
         <div style="width:200px;height:200px;border:1px solid #70c3ff">                                  
            <img id="image" style="max-height:100%;max-width:100%;background-color:red" src="@ServerLink.configCollection["GetCompanyPictureByID"]/@Model.SysKey" />
        </div>
    </form>                       
</div>

所以我的问题是我想在控制器中添加IFormFile参数旁边的另一个veiw模型。如

public async Task<JsonResult> fileUpload(IFormFile file, myInfVM infovm)

和我的myInfVM:

public class myInfVM
{                        
    public string CompanySK { get; set; }
    public string CompanyName { get; set; }
}

我尝试了以下方法,但没有运气。

var files = new FormData();
files.append('file', updfile.files[0]);      

$.ajax({
    url: url,
    data:{ file : files, infovm : { CompanySK : '123', CompanyName : 'ABC' } },
    cache: false,
    contentType: false,
    processData: false,
    type: 'POST',
    success: function (data) {
        alert(data.responseText);
        displayLoading(false);
    },
    error: function (err) {
        alert(err.responseText);
        document.getElementById("image").src = "#";
        displayLoading(false);
    }
});

0 个答案:

没有答案