Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net App_数据文件夹中的图像未显示在浏览器中_Asp.net_Image_App Data - Fatal编程技术网

Asp.net App_数据文件夹中的图像未显示在浏览器中

Asp.net App_数据文件夹中的图像未显示在浏览器中,asp.net,image,app-data,Asp.net,Image,App Data,当我将图像URL属性设置为App_数据文件夹中的asp图像控件时,图像会显示在页面设计视图中,但不会显示在浏览器中 <form id="form1" runat="server"> <div> <asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" /> </div> </form> 这看起来很简单,但它没有显示图像。App_Data文件夹是一个

当我将图像URL属性设置为App_数据文件夹中的asp图像控件时,图像会显示在页面设计视图中,但不会显示在浏览器中

<form id="form1" runat="server">
<div>
    <asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>


这看起来很简单,但它没有显示图像。

App_Data文件夹是一个专门为数据库文件等数据保留的文件夹,不会在web上显示任何内容。这是故意的,是故意的,不能改变(据我所知)


您的图像绝对不属于
App\u Data
子文件夹-请将其放入
/images
文件夹或更合适的文件夹中。

图像不应存储在
App\u Data
文件夹中。这是为不应直接提供给用户的文件保留的,例如.mdb数据库文件等


我会在网站的根目录下创建一个
/Resources
/Resources/Images
文件夹。

好的,是时候做不可能的事了。。。虽然无法直接从app_数据文件夹加载图像,但可以编写自己的http处理程序,该处理程序将从app_数据文件夹读取图像文件并将其发送回客户端。这将是一个解决办法,但一般来说,数据是指只有应用程序才能读取的数据。通过让处理程序读取数据,您仍然可以返回这些图像


但这是一种坏习惯,如果你为我工作,你会立即被解雇

我不同意。在App_Data文件夹中隐藏图像并创建自己的http处理程序时,您可以保护图像,并可以在显示图像之前在图像上添加版权文本等


我这样做的时候,我有高分辨率的图片,我不想让每个人都得到,并让http处理程序缩小图像的规模,并放上一些有版权的文本。太好了

可以提供App_数据文件夹中的内容,但不能直接访问。
不可能直接访问,也不建议间接访问。这是故意的。

但是,添加虚拟路径可以做到这一点。 看到这个了吗


我认为前三名答案符合你的目的。
将图像存储在全局或本地资源文件夹中这些也是特殊文件夹,可以通过编程方式访问内容。

这取决于!)

App\u Data
中保存图像有很好的理由。在您的用户可以上载其文件或徽标的情况下,它将保护这些文件,而不会让其他用户访问或公开这些文件

最重要的是,这是每个服务器/部署实例拥有不同文件的唯一方法

部署应用程序时,您可以通过在部署配置中启用“从应用程序数据中排除文件”来保护每个服务器实例的用户上载的这些文件

如果您想通过url访问这些文件,请使用下载处理程序,例如downloadfile.ashx

希望这有帮助

public string ReturnImage(){
 
alternatively if you wanted to pass a param.

so for example

int WhatEverId = 5;

String folderPath = string.empty;
HostingEnvironment.MapPath("~/App_Data/YourFolder") + @"\" +WhatEverId.ToString());

 string imageYouWantToDisplay = "Test.png";
 string base64String = "";
 String path = HostingEnvironment.MapPath("~/App_Data");
 
 using (Image image = Image.FromFile(path + "/" + imageYouWantToDisplay))
  {
     using (MemoryStream m = new MemoryStream())
      {
        image.Save(m, image.RawFormat);
        byte[] imageBytes = m.ToArray();

        // Convert byte[] to Base64 String
          base64String = Convert.ToBase64String(imageBytes);
      }
    }

    return base64String;

}
然后可以在action方法中调用它

public DisplayImages (){
List<WhateverModel> test = new List<WhateverModel>();

 test = GetAll().ToList();

  test.ForEach(x=> { MyImage = ReturnImage();});

  return test;

  }
公共显示图像(){
列表测试=新列表();
test=GetAll().ToList();
test.ForEach(x=>{MyImage=ReturnImage();});
回归试验;
}
看法

@model WhateverModel
或者用js

即使考虑如何绕过asp.net,允许从app_数据提供图像,也是一个坏主意…@Chris,我同意!我要解雇我自己!;-)+1.分享想法,即使是不好的做法。有时,这是一种学习如何做正确事情的方法,因为它有助于理解可以做什么。大家好,但问题是,当我尝试在根目录中创建“/Resources/Images”文件夹时,我遇到了拒绝访问错误。(当站点托管在IIS中时)。为IIS用户帐户在根目录中创建目录的最佳方法是什么?是否授予用户帐户对整个根目录的权限?是否可能?当我尝试在根目录中创建目录时,我遇到了拒绝访问错误。
@model WhateverModel
<img src="@MyImage" /> or in js  <img src="${MyImage}" />