2016-06-24 32 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 –

相关问题