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
相关产品推荐
相关产品推荐

