Jay*_*ang 6 asp.net-mvc jquery-file-upload
我目前正在使用asp.net mvc 4,并使用jquery-file-upload来上传图片,如果我这样初始化:
$('#fileupload').fileupload();
$('#fileupload').fileupload('option', {
//url: '/Admin/News/Create',
maxFileSize: 500000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxNumberOfFiles: 1,
resizeMaxWidth: 1920,
resizeMaxHeight: 1200,
});
Run Code Online (Sandbox Code Playgroud)
当选择图像文件时,图像可以在borwser中预览,但在mvc Action Request.Files.Count为0时,表示没有上传文件.如果我这样初始化:
//$('#fileupload').fileupload();
$('#fileupload').fileupload('option', {
//url: '/Admin/News/Create',
maxFileSize: 500000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxNumberOfFiles: 1,
resizeMaxWidth: 1920,
resizeMaxHeight: 1200,
});
Run Code Online (Sandbox Code Playgroud)
我无法预览图像,但mvc Action获取文件,有谁知道为什么?控制器的邮政编码:
[HttpPost]
[ValidateInput(false)]
public ActionResult Create(NewsViewModel model, FormCollection form)
{
if (ModelState.IsValid)
{
//....
// upload image
foreach (string file in Request.Files)
{
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
if (hpf.ContentLength == 0)
continue;
string path = Path.Combine(Server.MapPath("~/Uploads/News/"),GUID.NewGuid()+ Path.GetExtension(hpf.FileName));
hpf.SaveAs(path);
data.ImagePath = path;
_iNewsService.UpdateNews(data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,用以下方法解决了它:
[HttpPost]
[ValidateInput(false)]
public ActionResult Create(NewsViewModel model, FormCollection form)
{
var length = Request.ContentLength;
var bytes = new byte[length];
Request.InputStream.Read(bytes, 0, length);
//or for creating image from stream
Bitmap bmp = new Bitmap(Bitmap.FromStream(InputStream));
bmp.Save("some path");
}
Run Code Online (Sandbox Code Playgroud)
希望这能有所帮助。