ASP.NET:图像 URL 正确,但图像不显示

Posted

技术标签:

【中文标题】ASP.NET:图像 URL 正确,但图像不显示【英文标题】:ASP.NET: Image URL is correct, but image does not display 【发布时间】:2020-06-10 20:49:12 【问题描述】:

我知道以前有人问过这个问题,因为这是一个菜鸟问题,但这里的其他答案并没有为我澄清。我上传文件然后提供预览。我的上传按钮的点击事件是这样的:

protected void UploadFile (object sender, EventArgs e) 

    string folderPath = Server.MapPath ("~/Uploads/");

    // If folder does not exist, create it.
    if (!Directory.Exists (folderPath))
        Directory.CreateDirectory (folderPath);         

    //Save the File to the Directory (Folder).
    FileUpload.SaveAs (folderPath + Path.GetFileName (FileUpload.FileName));

    //Display the Picture in Image control.
    imgItem.ImageUrl = folderPath + Path.GetFileName (FileUpload.FileName);

上传工作正常,但图片控件(imgItem)不显示图片。当我跟踪它时,该 URL 看起来很完美。网址是:

"C:\\MyStuff\\Source\\Inventory\\Inventory\\UserInterface\\Uploads\\sample.jpg"

这应该行得通。我到底做错了什么?

编辑:我觉得这根本不是一个好的解决方案,但是我发现如果我将最后一行更改为该程序,程序会按预期工作:

imgItem.ImageUrl = "~/Uploads/" + Path.GetFileName (FileUpload.FileName);

没有人有更干净、更少硬编码的解决方案吗?

【问题讨论】:

"C:\blah\blah" 不是“完美的”。这与你想要的相反。该页面将在最终用户的计算机上查看。他们不会在“C:\blah\blah”的机器上拥有这个文件。相反,您必须向他们提供一个指向您实际提供文件的路径的 URL。 感谢您的评论。我实际上并没有引用驱动器号。这是一个相对路径,所以它确实存在于服务器上。 是的,您确实引用了驱动器号。你看过Server.MapPath ("~/Uploads/")给你什么了吗? 好的,我明白你的意思了。那么如何重定向它以指向服务器呢? 你已经明白了。这是您发布的“硬编码解决方案”。你已经硬编码了上面~/Uploads/ 的路径,你似乎并没有犹豫,所以我不明白你为什么在这里这样做。您当然可以将其更改为从配置中获取路径,或者使用 const 或其他获取基本路径的方法,但总体思路就是您已经展示的内容。 【参考方案1】:

好吧,

“C:\MyStuff\Source\Inventory\Inventory\UserInterface\Uploads\sample.jpg”

实际上是文件路径,而不是 URL。由于您使用“URL”这个词,我假设您正在构建一个网站。这意味着您需要一个正确的 URL(例如 http(s)://yourdomain.com/Source/Inventory/..../sample.jpg)

如果您不知道文件路径的 url 是什么,您可以使用 IIS 中的虚拟文件夹来映射它。 https://docs.kentico.com/k11/installation/deploying-kentico-to-a-live-server/creating-virtual-directories-and-application-pools-in-iis-7-5-and-7-0

【讨论】:

【参考方案2】:

imgItem.ImageUrl = "~/Uploads/" + Path.GetFileName (FileUpload.FileName);

【讨论】:

以上是关于ASP.NET:图像 URL 正确,但图像不显示的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core tilde slash (~/) 不解析图像路径

ASP.net MVC 验证突出显示和不正确字段上的图标 Jquery

ASP.net core MVC Framework 5 Formdata在附加图像时类型不正确

为啥图像不显示在我的 ASP.Net 核心网站上?

ASP NET 站点不显示图像和 css [重复]

如何在 ASP.NET 中将 base64 图像 URL 转换为用户友好 URL