我使用JQuery Fileupload将视图中的文件上传到.NET中的服务器。我尝试在上传中添加其他信息,这些信息是页面中两个组合框的值。我跟着documentation并决定以编程方式在formData
中添加我的组合框值。但是,它没有按预期工作。
这是我的fileuploader
:
$('#fileupload').fileupload({
dataType: 'json',
url: '/Home/UploadFiles',
sequentialUploads: true,
multipart: true,
formData: { SectorCode: $('#comboSector').val(), AppName: $('#comboApp').val() },
autoUpload: true,
done: function (e, data) {
$('.file_name').html(data.result.name);
$('.file_type').html(data.result.type);
$('.file_size').html(data.result.size);
}
})
这是我的controller function
:
[HttpPost]
public ContentResult UploadFiles(string data)
{
string sector = Request.Form["SectorCode"];
string app = Request.Form["AppName"];
.....
}
这里的问题是扇区和应用程序都返回null。但是,如果我选择通过{SectorCode: 3, AppName: myApp}
,我将拥有良好的服务器端值。这有什么不对?
编辑:
以下是我的相关HTML部分:
<input id="fileupload" type="file" name="files[]" multiple accept="application/pdf">
答案 0 :(得分:0)
尝试以下操作,确保表单元素具有已定义的name属性:
string sector = Request.Form["comboSector"];
string app = Request.Form["comboApp"];
并完全跳过formData
属性。
如果没有,请发布您的HTML吗?
答案 1 :(得分:0)
我建议使用以下用法。
你的Html,(注意文件输入名称。它应该在模型中匹配)
<select id="SectorCode" />
<select id="AppName"/>
<!-- The file input field used as target for the file upload widget -->
<input id="fileupload" type="file" name="files" multiple>
为您的行动创建模型
public class FormData
{
public List<HttpPostedFileWrapper> files { get; set; }
public string SectorCode { get; set; }
public string AppName { get; set; }
}
并像这样定义你的控制器动作
[HttpPost]
public JsonResult UploadFiles(FormData data)
{
...
}
要附加其他表单数据,请使用fileuploadsubmit事件
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = '@Url.Action("Upload","Home")';
$('#fileupload').fileupload({
url: url,
dataType: 'json',
done: function (e, data) {
// handle done event.
},
}).bind("fileuploadsubmit", function (e, data) {
data.formData = {
SectorCode: $("#SectorCode").val(),
AppName: $("#AppName").val()
};
});
});