2013-09-28 28 views
0

我将图像上传到文件夹并将其路径保存到db.Here是我的代码。将图像路径存储为asp.net中的单个正斜杠

[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(); 
} 

但路径存储为双斜杠,这是wrong.How我可以保存路径为单个斜线。 在此先感谢您的帮助。

回答

0

你说的路径存储与“双向正斜杠”,这将是//。我想你的意思是一个“双反斜杠”,这将是\\。请提供一个例子,如果我错了。

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

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

与您的代码的其他问题:

  • 删除此行:

    if (query.Count() > 0) 
    

    这是不必要的,是造成执行两次查询。

  • 这条线:

    session.SaveChanges(); 
    

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

  • 使用一致的命名约定。局部变量FileName应该包含为fileName

+0

明白了我的意思,修改我的源代码,现在它按预期工作。谢谢! – Wasfa

相关问题