araz_pashazadeh
سه شنبه 28 اردیبهشت 1395, 19:57 عصر
با سلام
بنده فیلتری برا یارسال فایل به سرور به شکل زیر نوشتم:
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)) return false;
var ext = Path.GetExtension(fileName.ToLowerInvariant());
return _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);
}
}
تکه کد بالا درست کار می کنه.
ولی هنگام ارسال فایل غیر مجاز استثنایی مورد نظر رخداد و اکشن مربوطه اجرا نمیشه تا بنده پیغام مناسب را نمایش بدم.
برای نمایش پیغام در صورت ارسال فایل غیرمجاز چه کار باید انجام بدم؟
بنده فیلتری برا یارسال فایل به سرور به شکل زیر نوشتم:
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)) return false;
var ext = Path.GetExtension(fileName.ToLowerInvariant());
return _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);
}
}
تکه کد بالا درست کار می کنه.
ولی هنگام ارسال فایل غیر مجاز استثنایی مورد نظر رخداد و اکشن مربوطه اجرا نمیشه تا بنده پیغام مناسب را نمایش بدم.
برای نمایش پیغام در صورت ارسال فایل غیرمجاز چه کار باید انجام بدم؟