2016-01-05 54 views
0

我試圖用asp.net mvc 5中的實體框架將數據保存在數據庫和存儲路徑中。 我做到了,但我有一些問題。在DB如何在asp.net mvc中上傳文件時如何更改服務器映射路徑和文件名?

圖像保存路徑是這樣的:

C:\Users\Shima\Documents\Visual Studio 2013\Projects\NP1\NP1\Images\SubGoods\2.jpg 

我怎樣才能將其更改爲:~/Images/SubGoods/2.jpg

,我想改變形象的名字給它的primary key id和我以前pic =Convert.ToString(subgood.SubGoodID);做到這一點,但它可以節省零:

C:\Users\Shima\Documents\Visual Studio 2013\Projects\NP1\NP1\Images\SubGoods\0 

它節省總是0。我知道那是因爲沒有產生在該行的主鍵但是。我的代碼primary Key id在哪裏生成?

public ActionResult AddSubGood(SubGood subgood, HttpPostedFileBase UploadImage) 
    { 
     var MainGoodId = subgood.FKMainGoodID; 
     SubGoodRepositories blSubGood = new SubGoodRepositories(); 
     string path=""; 
     if (UploadImage != null) 
     { 
      string pic = System.IO.Path.GetFileName(UploadImage.FileName); 
      pic =Convert.ToString(subgood.SubGoodID); 
      path = System.IO.Path.Combine(
            Server.MapPath("~/Images/SubGoods"), pic); 

     } 

     if (ModelState.IsValid) 
     { 
      subgood.FKMainGoodID = MainGoodId; 
      UploadImage.SaveAs(path); 
      subgood.SubGoodImage = path; 

      if (blSubGood.Add(subgood)) 
      { 
       return JavaScript("alert('saved');"); 
      } 
      else 
      { 
       return JavaScript("alert('didn't saved');"); 
      } 
     } 
     else 
     { 
      return JavaScript("alert('error');"); 
     } 

    } 
+0

可以「/圖片/ SubGoods」添加到web.config中並只保存文件名在數據庫中。當你想要訪問文件時,請對其進行Concat。 – adiga

+0

不知道用PK保存文件。因爲您首先以物理方式保存文件,然後將該URL保存在數據庫中。用時間戳保存文件是最好的選擇。 – adiga

+0

謝謝,這意味着沒有辦法使用'Server.MapMath'來完成它?帶時間戳的@adiga –

回答

1

你應該只保存文件名:

var fileName = Path.GetFileName(UploadImage.FileName); 

然後,當你想獲取用戶的文件,你可以簡單地解決與特定路徑的文件名:

<img src="~/Content/Uploaded/@item.fileName" .../> 

您還可以生成使用Guid一個隨機文件名:

var rondom = Guid.NewGuid() + fileName; 
1

使用Server.Mappath將返回虛擬路徑(你不需要),您可以創建另一個變量並連接這樣的:

string DbPath = "~/Images/SubGoods/"; // better to store in web.config file 
DbPath = DbPath + ""//here you can query in table and find the last inserted primary key and increment it with '1' 
相關問題