以下代码用于在项目目录中创建一个新文件夹:
[HttpPost]
[ActionName("Create")]
public ActionResult Create(Item model)
{
string s = model.Category.Name;
if (ModelState.IsValid && model.imageUpload != null && model.imageUpload.ContentLength > 0)
{
string initialPath = string.Format("~/Images/Products/" + s + "/");
var virtualPath = Path.Combine(initialPath, model.imageUpload.FileName);
var d = Directory.CreateDirectory(string.Format(Server.MapPath(initialPath)));
var extension = Path.GetExtension(model.imageUpload.FileName);
var validImageTypes = new[] { ".gif", ".GIF", ".jpg", ".JPG", ".jpeg", ".JPEG", ".pjpeg", ".PJPEG", ".png", ".PNG" };
if (!validImageTypes.Contains(extension))
{
ModelState.AddModelError("imageUpload", "Please add a valid format picture (i.e., a .gif,.jpg or .png image");
return View();
}
model.imageUpload.SaveAs(Server.MapPath(virtualPath));
model.imageUrl = virtualPath;
db.Items.Add(model);
db.SaveChanges();
TempData["name"] = model.ItemName;
return RedirectToAction("Create");
}
model.Categories = new SelectList(db.Categories.ToList(), "Name", "Name");
model.Brands = new SelectList(db.Brands.ToList(), "Name", "Name");
return View(model);
}
代码运行得很顺利,并在所需目录下创建所需文件夹。当前出现的问题是从新创建的文件夹中读取时,Visual Studio无法从该文件夹中读取,并且浏览器从该文件夹中读取时抛出404(找不到文件)错误。
与权限有关吗?我检查了新创建的文件夹权限,并将这些权限设置为“所有人”的“完全访问权限”。
有人可以指导吗?
答案 0 :(得分:0)
您可能需要为该路径添加一个静态文件处理程序-如果它位于Web应用程序的路径下,则IIS将不会提供静态文件,因为这存在安全风险。
用读取文件并返回文件的Action替换文件的URL,或者在该路径的web.config中添加静态文件处理程序。