我正在将用户的个人资料图片上传到文件夹并将其路径保存到RavenDB。但我的代码给了我一个错误,找不到路径的一部分。在这一行
file.SaveAs(path);
代码:
[HttpPost]
public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file)
{
string email = User.Identity.Name;
if (file != null && file.ContentLength > 0)
{
var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);
var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
file.SaveAs(path);
using (var session = DocumentStore.OpenSession("RavenMemberShip"))
{
var query = from q in Session.Query<Registration>() where q.Email == email select q;
if (query.Count() > 0)
{
foreach (var updated in query)
{
fmanage.FileName = FileName;
fmanage.Path = path;
session.SaveChanges();
}
}
}
}
else ModelState.AddModelError("", "Remove the errors and try again");
return View();
}
答案 0 :(得分:0)
您的路径中有输入错误...
替换...
var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
使用...
var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"), FileName);
您还需要确保您具有写入此目录的相关权限。
根据您的错误,文件路径看起来不正确。
c:\ users \ wasfa \ documents \ visual studio 2012 \项目\ MvcMembership \ MvcMembership \程序App_Data \上传\ daed3def-df2b-4406-AA 9E-c1995190aa6d.image \ JPEG
daed3def-df2b-4406-aa 9e-c1995190aa6d.image \ jpeg 该文件的名称?
尝试:
[HttpPost]
public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file)
{
string email = User.Identity.Name;
if (file != null && file.ContentLength > 0)
{
var FileName = string.Format("{0}.{1}", Guid.NewGuid(), Path.GetFileName(file.FileName));
var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
file.SaveAs(path);
using (var session = DocumentStore.OpenSession("RavenMemberShip"))
{
var query = from q in Session.Query<Registration>() where q.Email == email select q;
if (query.Count() > 0)
{
foreach (var updated in query)
{
fmanage.FileName = FileName;
fmanage.Path = path;
session.SaveChanges();
}
}
}
}
else ModelState.AddModelError("", "Remove the errors and try again");
return View();
}
答案 1 :(得分:0)
在file.SaveAs(path)
之前,尝试检查目录是否存在,如果没有,请创建一个,
if(CreateFolderIfNeeded(path);
{
file.SaveAs(path);
}
如果需要,创建目录的私有函数
private static bool CreateFolderIfNeeded(string path)
{
bool result = true;
if (!Directory.Exists(path))
{
try
{
Directory.CreateDirectory(path);
}
catch (Exception)
{ result = false; }
}
return result;
希望这有帮助。
答案 2 :(得分:0)
检查代码中的var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);
行。
file.ContentType不会返回您要上传的文件的扩展名。它应该像 daed3def-df2b-4406-aa 9e-c1995190aa6d.jpeg 而不是 daed3def-df2b-4406-aa 9e-c1995190aa6d.image \ jpeg
使用子字符串从上传的文件中找到扩展名。
希望这个帮助