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

ASP.NET: Image URL is correct, but image does not display

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

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 看起来很完美。 URL 是:

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

那应该有用。我到底做错了什么?

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

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

没有人有更简洁、更简单的解决方案吗?

嗯,

"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

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