2016-06-24 33 views
0

我在瀏覽器中顯示上傳圖片時遇到問題。 我得到錯誤如何返回圖片網址而不是文件路徑

不允許加載本地資源: 文件:/// C:/Office%20Data/dummy/AngularJSAuthentication-master/MyCars/MyCar.API/App_Data/Images/p7.jpeg% 20alt =

我寫了下面這行代碼來將圖像存儲在App_data下的服務器上。

File.Path = Url.Content(string.Format("{0}/{1}", System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Images"), fileName)); 

文件路徑保存在DB如下

file:///C:/Sample%20Data/dummy/AngularJSAuthentication-master/MyCars/MyCar.API/App_Data/Images/p7.jpeg 

HTML

<img ng-src="{{motor.FileUploads[0].Path}} alt="Description" /> 

google搜索,我得到這個錯誤的原因後。

Basically i need to return back Image URL instead of file path. 

問題: 我不知道我怎麼可以返回圖像路徑回角客戶端。

有人可以指導我。

+0

你可以分享你正在使用的

+0

我已更新我的問題以回答您的問題。請檢查。 – simbada

回答

2

您不需要指定完整的物理路徑,何時從瀏覽器

File.Path = Url.Content(string.Format("~/App_Data/Images/{0}", fileName)); 

此引用應該返回相對URL

更新:嗯,這是行不通的,因爲你可以直接訪問App_Data文件夾中的內容。你可以處理這個的這兩種方式

  • 移動圖像進行App_Data文件夾的喜歡〜/圖像文件夾 ,它應該工作或
  • 保留該文件在App_Data文件夾,但流使用 文件在你的控制器
  • 的一個內容/文件結果行動

第二個選項的最低限度樣本實現會是什麼樣子

public class UploadsController : Controller 
{ 
    [HttpGet] 
    public ActionResult Image(string fileName) 
    { 
     //!validate file name! 
     return File(Server.MapPath($"~/App_Data/{fileName}"), "image/jpeg"); 
    } 
} 

然後在HTML中它可以被引用爲<img src="api/uploads/image?filename=temp.jpg" ...

+0

在這種情況下,它返回「http:// localhost:26264/App_Data/Images/p5.jpeg」但是,瀏覽器仍然顯示「GET http:// localhost:26264/App_Data/Images/p5.jpeg%20alt = 404未找到)「HTTP錯誤404.8 - 未找到 請求過濾模塊配置爲拒絕URL中包含hiddenSegment節的路徑。 – simbada

+0

啊!我忘了你不能直接訪問存儲在App_Data文件夾中的文件。在這種情況下你有兩個選擇。我將更新答案 –

+0

謝謝,請更新您的答案。我在等。 – simbada

0

剛落之外的所有文件名,如果所有的圖像都在Images根:

//using System.IO; 

File.Path = Url.Content(string.Format("{0}/{1}", System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Images"), Path.GetFileName(fileName))); 

更新

本來應該像薩姆的回答是:

File.Path = Url.Content(string.Format("~/App_Data/Images/{0}",Path.GetFileName(fileName))); 
+0

我沒有給你帶來太多。基本上,我的App_Data/Images文件夾位於Web Api項目下,而Angular Client位於不同的項目下。希望你明白我在說什麼。 – simbada

+0

我想我不明白。如果文件上傳到'AppData',這將工作。 – Crowcoder

+0

是不是'Server.MapPath'應該給你物理位置? https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v=vs.110).aspx –

相關問題