You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET图片返回无效字符:上传后图片不显示的解决咨询

解决ASP.NET Image控件Data URI被URL编码导致图片不显示的问题

问题根源是ASP.NET的Image服务器控件会自动对ImageUrl属性进行URL编码,将Data URI中的:、;、,等特殊字符转义为%3A、%3B、%2C,导致浏览器无法识别正确的Data URI格式。

以下两种方案可以解决这个问题:

方案1:替换为带runat="server"的HTML img标签

将原有的<asp:Image>控件替换为普通HTML img标签并添加runat="server",后台直接设置其Src属性即可避免编码:

前端标记修改

<td>
    <asp:Button ID="btnUploadSignature" runat="server" Text="Upload" onclick="btnUploadSignature_Click" />
    <img id="imgSignature" visible="true" runat="server" height="100" width="100" />
</td>

后台代码修改

protected void btnUploadSignature_Click(object sender, EventArgs e)
{
    if (fileSignature.HasFile)
    {
        string base64String = Convert.ToBase64String(fileSignature.FileBytes);
        imgSignature.Src = $"data:image/png;base64,{base64String}";
    }
}

方案2:通过Attributes直接设置src属性(保留ASP.NET Image控件)

如果需要保留原有的<asp:Image>控件,后台不要使用ImageUrl属性,而是直接操作控件的Attributes集合设置src,绕过自动编码机制:

后台代码修改

protected void btnUploadSignature_Click(object sender, EventArgs e)
{
    if (fileSignature.HasFile)
    {
        // 根据文件实际类型设置MIME,兼容JPG/JPEG格式
        string mimeType = fileSignature.PostedFile.ContentType;
        string base64String = Convert.ToBase64String(fileSignature.FileBytes);
        imgSignature.Attributes["src"] = $"data:{mimeType};base64,{base64String}";
        imgSignature.Visible = true;
    }
}

内容的提问来源于stack exchange,提问作者osagie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:22:59