【发布时间】:2013-12-18 11:32:22
【问题描述】:
我已经开发了 ASP.NET MVC4 文件上传,它工作正常,但我有一个问题,我需要将参数 Folderid 传递给控制器,但不幸的是我无法在控制器中获取 folderId。你能尽快帮助我吗
下面是我的代码
$(document).ready(function () {
var Folderid = "ab";
$('#fileupload').fileupload({
dataType: 'json',
url: '/Home/UploadFiles',
autoUpload: true,
data: { name: Folderid },
done: function (e, data) {
if (data.result.name == '') {
$('.file_name').html('Please Upload valid image...');
$('.progress .progress-bar').css('width', 0 + '%');
}
else {
$('.file_name').html("Uploaded Successfully..[ " + data.result.name + " ]");
}
}
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('.progress .progress-bar').css('width', progress + '%');
});
});
下面是我的控制器代码
[HttpPost]
public ContentResult UploadFiles(string name)
{
string FolderId = name;
var r = new List<UploadFilesResult>();
foreach (string file in Request.Files)
{
var allowedExtensions = new[] { ".jpg", ".jpeg", ".bmp", ".icon" };
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
if (hpf.ContentLength == 0)
continue;
if (!allowedExtensions.Contains(System.IO.Path.GetExtension(hpf.FileName).ToString()))
{
r.Add(new UploadFilesResult()
{
Name = "",
Length = 0,
Type = ""
});
}
else
{
string savedFileName = Path.Combine(Server.MapPath("~/Upload"), Path.GetFileName(hpf.FileName));
hpf.SaveAs(savedFileName);
r.Add(new UploadFilesResult()
{
Name = hpf.FileName,
Length = hpf.ContentLength,
Type = hpf.ContentType
});
}
}
return Content("{\"name\":\"" + r[0].Name + "\",\"type\":\"" + r[0].Type + "\",\"size\":\"" + string.Format("{0} bytes", r[0].Length) + "\"}", "application/json");
}
【问题讨论】:
-
找到这个:stackoverflow.com/questions/17934689/… 这可能有一些用处。另外,我建议提及您正在使用的库,fileUpload 不是 jQuery 函数。
-
@Swires,请您指定我的磨损在哪里......请
-
查看答案以获得可能的修复,但我的意思是 fileUpload 是一个单独的库github.com/blueimp/jQuery-File-Upload/wiki/…,应该在问题中提及。当我第一次阅读它时,我想“我不知道 jQuery 处理文件上传!?”
-
@ Swires,明白了,非常感谢...您为我节省了很多时间,我非常感谢您,我使用过这样的 formData : {name: Folderid},
-
没问题,很乐意提供帮助。