在asp.net中将图像路径存储为单个正斜杠

时间:2013-09-28 18:18:49

标签: c# asp.net image ravendb

我正在将图片上传到文件夹并将其路径保存在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();
}

但路径存储为双正斜杠,这是错误的。如何将路径保存为单斜杠。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你说路径存储了一个“双正斜杠”,即//。我认为你的意思是“双反斜杠”,它将是\\。如果我弄错了,请提供一个例子。

双反斜杠是合适的,因为它会逃避反斜杠字符。 \n之类的值将是换行符,因此必须将实际反斜杠转义为\\。这是JSON如何存储字符串的一部分。

但是,您可能只想考虑将文件名存储到文档中。 uploads文件夹的完整路径只是多余的。如果您想要更改它,那么您应该只能编辑设置而不必修改所有文档。

您的代码存在其他问题:

  • 删除此行:

    if (query.Count() > 0)
    

    这是不必要的,并导致查询执行两次。

  • 这一行:

    session.SaveChanges();
    

    foreach循环后需要移动。您只需要将一批更改发送到RavenDB。

  • 使用一致的命名约定。 FileName本地变量应设为fileName