我正在使用本教程为我的MVC 4 webapp构建一个拖放上传功能: http://hayageek.com/drag-and-drop-file-upload-jquery/
但是,除了文件之外,我还想发送有关它来自何处的信息(例如某些ID)和类型(域类型)。
在我下面的ajax帖子中,如何添加额外数据并将其读取到服务器端? 在教程代码中,可以看到带有“额外数据”的行,但实际上并没有实现。
function sendFileToServer(formData, status) {
var uploadURL = '/home/upload';
var extraData = {}; //Extra Data.
var jqXHR = $.ajax({
xhr: function() {
var xhrobj = $.ajaxSettings.xhr();
if (xhrobj.upload) {
xhrobj.upload.addEventListener('progress', function(event) {
var percent = 0;
var position = event.loaded || event.position;
var total = event.total;
if (event.lengthComputable) {
percent = Math.ceil(position / total * 100);
}
//Set progress
status.setProgress(percent);
}, false);
}
return xhrobj;
},
url: uploadURL,
type: "POST",
contentType: false,
processData: false,
cache: false,
data: formData,
success: function (data) {
status.setProgress(100);
//$("#status1").append("File upload Done<br>");
}
});
status.setAbort(jqXHR);
}
谢谢!
答案 0 :(得分:1)
要通过Ajax上传文件将其他数据传递给控制器,只需在Ajax调用函数(sendFileToServer)中将附加数据附加到formData即可。即你想传递一个上传目标文件夹:
formData.append('targetFolder', 'User File Upload Folder');
并在您的操作中访问您的其他参数:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file, string targetFolder)
答案 1 :(得分:0)
我通过创建一个解决方法解决了这个问题,我通过我在控制器方法上作为参数接收的URL传递了额外的数据(id等)。