我試圖用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');");
}
}
可以「/圖片/ SubGoods」添加到web.config中並只保存文件名在數據庫中。當你想要訪問文件時,請對其進行Concat。 – adiga
不知道用PK保存文件。因爲您首先以物理方式保存文件,然後將該URL保存在數據庫中。用時間戳保存文件是最好的選擇。 – adiga
謝謝,這意味着沒有辦法使用'Server.MapMath'來完成它?帶時間戳的@adiga –