我已实现以下代码来上传文件。该文件将上载到该位置(“../App_Data/uploads”),但它不会显示在项目中。我必须在项目中手动包含该文件。为什么文件没有显示?
public ActionResult ChangeSetting(SettingViewModel setting)
{
string userId = User.Identity.GetUserId();
ApplicationUser currentUser = this._appUserRepo.Find(e => e.Id.Equals(userId)).FirstOrDefault();
if (setting.PictureUrl != null)
{
if (setting.PictureUrl.ContentLength > 0)
{
string fileName = Path.GetFileName(setting.PictureUrl.FileName);
if (fileName != null)
{
string path = Path.Combine(Server.MapPath("../App_Data/uploads"), fileName);
setting.PictureUrl.SaveAs(path);
if (currentUser != null)
{
currentUser.PictureUrl = path;
currentUser.PictureSmalUrl = path;
currentUser.PictureBigUrl = path;
}
}
}
}
if (setting.FirstName != null)
{
if (currentUser != null) currentUser.FirstName = setting.FirstName;
}
_appUserRepo.Update(currentUser);
return RedirectToAction("index", "Admin");
}
答案 0 :(得分:7)
为什么文件没有显示?
因为Visual Studio项目的工作原理 - 只有手动包含在项目中的文件才会显示在解决方案资源管理器中。之后由永久进程动态添加到文件夹的文件不会显示在Visual Studio中(除非您手动包含它们并使它们成为解决方案的一部分)。但这可能不是你应该担心的事情。用户上传的文件不会自动出现在Visual Studio项目中。重要的是它们存在于预期的位置,并且您的Web应用程序能够在运行时访问它们。只需在Windows资源管理器中打开文件夹的物理位置,即可确认您的代码是否按预期工作。