3
A
回答
7
您需要使用JavaScript来验证,这里是一个样本
function onSelect(e) {
if (e.files[0].size > 256000) {
alert('The file size is too large for upload');
e.preventDefault();
return false;
}
// Array with information about the uploaded files
var files = e.files;
var ext = $('#logo').val().split('.').pop().toLowerCase();
if ($.inArray(ext, ['gif', 'jpeg', 'jpg', 'png', 'tif', 'pdf']) == -1) {
alert('This type of file is restricted from being uploaded due to security reasons');
e.preventDefault();
return false;
}
return true;
}
此说,文件大小不得超过256K更大,只允许GIF,JPG,JPEG,TIF,PNG和pdf。只需将256000更改为5000000,然后选择具体的文件类型
我在使用Telerik上传控件的剃须刀视图中的MVC 3中使用此功能。你也可以使用标准的上传输入,只要在选择或提交之前触发此事件
5
Aside jQuery validation(非常好的酸的答案)你也应该做服务器验证。 下面是一些简单的例子:
VIEW:
@if (TempData["imageUploadFailure"] != null)
{
@* Here some jQuery popup for example *@
}
@using (Html.BeginForm("ImageUpload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<legend>Add Image</legend>
<label>Image</label>
<input name="image" type="file" value=""/>
<br/>
<input type="submit" value="Send"/>
}
控制器:
public ActionResult ImageUpload()
{
return View();
}
[HttpPost]
public ActionResult ImageUpload(HttpPostedFileBase image)
{
var result = ImageUtility.SaveImage("/Content/Images/", 1000000, "jpg,png", image, HttpContext.Server);
if (!result.Success)
{
var builder = new StringBuilder();
result.Errors.ForEach(e => builder.AppendLine(e));
TempData.Add("imageUploadFailure", builder.ToString());
}
return RedirectToAction("ImageUpload");
}
ImageUtility辅助类:
public static class ImageUtility
{
public static SaveImageResult SaveImage(string path, int maxSize, string allowedExtensions, HttpPostedFileBase image, HttpServerUtilityBase server)
{
var result = new SaveImageResult { Success = false };
if (image == null || image.ContentLength == 0)
{
result.Errors.Add("There was problem with sending image.");
return result;
}
// Check image size
if (image.ContentLength > maxSize)
result.Errors.Add("Image is too big.");
// Check image extension
var extension = Path.GetExtension(image.FileName).Substring(1).ToLower();
if (!allowedExtensions.Contains(extension))
result.Errors.Add(string.Format("'{0}' format is not allowed.", extension));
// If there are no errors save image
if (!result.Errors.Any())
{
// Generate unique name for safety reasons
var newName = Guid.NewGuid().ToString("N") + "." + extension;
var serverPath = server.MapPath("~" + path + newName);
image.SaveAs(serverPath);
result.Success = true;
}
return result;
}
}
public class SaveImageResult
{
public bool Success { get; set; }
public List<string> Errors { get; set; }
public SaveImageResult()
{
Errors = new List<string>();
}
}
您也可以修改响应格式,不同的文件重命名或添加多个文件处理功能等。
2
这只是指定要接受的文件类型:MSvisualstudio2010。
在您的视图(.cshtml):
ATTACHMENT:<input type="file" name="file" id="file" accept=".PNG,.TXT,.JPG,.BMP" />
只要指定你所需要的格式。
相关问题
- 1. 如何在asp.net MVC 3剃须刀
- 2. asp.net MVC 3剃须刀部署IIS7
- 3. ASP.NET MVC 3剃须刀递归函数
- 4. asp.net MVC 3剃须刀/ LINQ的
- 5. asp.net mvc 3剃须刀&html表
- 6. asp.net MVC 3剃须刀和HTML IFRAME
- 7. asp.net MVC 3剃须刀自IEnumerable
- 8. ASP.NET MVC 3剃须刀DisplayFor代表
- 9. asp.net MVC 3剃须刀定制帮手
- 10. MVC剃刀文件上传
- 11. C#中的文件上传与ASP.NET MVC没有剃须刀
- 12. HTML.Partial - MVC 3剃须刀
- 13. ASP.Net MVC 3剃须刀,对文件上传局部视图通用方法
- 14. ASP.NET MVC(剃须刀)部署
- 15. asp.net MVC 3 - MVC 3剃须刀:国家选择下拉列表
- 16. asp.net mvc剃须刀是没有对话框不在剃须刀
- 17. 的SiteMapPath使用MVC 3剃须刀
- 18. 使用jQuery在mvc剃须刀上传文件
- 19. 如何在ASP.NET剃须刀上传文件
- 20. 显示在MVC 3剃须刀
- 21. MVC 3剃须刀,语法错误
- 22. MVC 3剃须刀模板在哪里?
- 23. MVC 3 - 剃须刀 - 从模型
- 24. MVC 3剃须刀AJAX不起作用
- 25. Devexpress Grid MVC 3剃须刀引擎
- 26. Facebook登录MVC 3 - 剃须刀
- 27. 的DevExpress网格MVC 3剃须刀
- 28. HTML在MVC 3剃须刀@using块内
- 29. webgrid中的Mvc 3 texbox(剃须刀)
- 30. 的mvc剃须刀捆
+1代码不错。我喜欢类型的数组。 –
Thx,我一直在使用这个代码过去的一年,它的作品就像一个魅力 –
谢谢,但还有一个问题,我可以如何调用onSelect()函数?像这样: –