با سلام
بنده فیلتری برا یارسال فایل به سرور به شکل زیر نوشتم:
public class AllowUploadSpecialFilesOnlyAttribute : ActionFilterAttribute {
private readonly List<string> _toFilter = new List<string>();
private readonly string _extensionsWhiteList;public AllowUploadSpecialFilesOnlyAttribute(string extensionsWhiteList)
{
if (string.IsNullOrWhiteSpace(extensionsWhiteList))
throw new ArgumentNullException("extensionsWhiteList");
_extensionsWhiteList = extensionsWhiteList;
var extensions = extensionsWhiteList.Split(',');
foreach (var ext in extensions.Where(ext => !string.IsNullOrWhiteSpace(ext)))
{
_toFilter.Add(ext.ToLowerInvariant().Trim());
}
}
private bool CanUpload(string fileName)
{
if (string.IsNullOrWhiteSpace(fileName)) retu false;
var ext = Path.GetExtension(fileName.ToLowerInvariant());
retu _toFilter.Contains(ext);
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var files = filterContext.HttpContext.Request.Files;
foreach (string file in files)
{
var postedFile = files[file];
if (postedFile == null || postedFile.ContentLength == 0) continue;
if (!CanUpload(postedFile.FileName))
{
//var result = new JsonResult();
//result.Data = ((ViewResult) filterContext.Result).Model;
//filterContext.Result = result;
filterContext.Result = new RedirectResult("Group/Uploade");
throw new InvalidOperationException(
string.Format("You are not allowed to upload {0} file. Please upload only these files: {1}.",
Path.GetFileName(postedFile.FileName),
_extensionsWhiteList));
}
}
base.OnActionExecuting(filterContext);
}
}
برچسب:
نویسنده: محمد رضا جوادیان