我正在将图片上传到文件夹并将其路径保存在db.Here是我的代码。
[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("~/Content/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)
{
updated.FileName = FileName;
updated.Path = path;
session.SaveChanges();
}
}
}
}
else
ModelState.AddModelError("", "Remove the errors and try again");
return View();
}
但路径存储为双正斜杠,这是错误的。如何将路径保存为单斜杠。 在此先感谢您的帮助。
答案 0 :(得分:0)
你说路径存储了一个“双正斜杠”,即//
。我认为你的意思是“双反斜杠”,它将是\\
。如果我弄错了,请提供一个例子。
双反斜杠是合适的,因为它会逃避反斜杠字符。 \n
之类的值将是换行符,因此必须将实际反斜杠转义为\\
。这是JSON如何存储字符串的一部分。
但是,您可能只想考虑将文件名存储到文档中。 uploads文件夹的完整路径只是多余的。如果您想要更改它,那么您应该只能编辑设置而不必修改所有文档。
您的代码存在其他问题:
删除此行:
if (query.Count() > 0)
这是不必要的,并导致查询执行两次。
这一行:
session.SaveChanges();
foreach
循环后需要移动。您只需要将一批更改发送到RavenDB。
使用一致的命名约定。 FileName
本地变量应设为fileName
。