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

通过ashx处理程序读取SQL的BLOB文件时如何在Edge中查看图片及PDF

问题解决方案

核心原因

你当前的乱码问题源于HTTP响应头的Content-Type配置错误:你同时配置了多个MIME类型,浏览器无法识别资源格式,会默认以纯文本形式渲染二进制内容,就会出现乱码。

具体修改步骤

1. 调整ASHX处理程序代码

需要根据文件的实际类型返回对应的单一MIME类型,同时添加Content-Disposition响应头指定内容为内嵌展示:
首先新增MIME类型识别辅助方法:

' 适配所有.NET Framework版本的写法
Private Function GetMimeType(ByVal fileName As String) As String
    Dim ext As String = System.IO.Path.GetExtension(fileName).ToLowerInvariant()
    Select Case ext
        Case ".jpg", ".jpeg"
            Return "image/jpeg"
        Case ".png"
            Return "image/png"
        Case ".gif"
            Return "image/gif"
        Case ".bmp"
            Return "image/bmp"
        Case ".pdf"
            Return "application/pdf"
        Case ".txt"
            Return "text/plain"
        Case Else
            Return "application/octet-stream"
    End Select
End Function

再修改ProcessRequest方法中的响应逻辑:

If sdr.HasRows Then
    While sdr.Read()
        Dim fileName As String = sdr(1).ToString()
        If Not String.IsNullOrEmpty(fileName) Then
            Dim fileBytes As Byte() = DirectCast(sdr(2), Byte())
            ' 设置正确的单一MIME类型
            context.Response.ContentType = GetMimeType(fileName)
            ' 配置为内嵌展示,同时指定文件名,解决PDF和图片识别问题
            context.Response.AddHeader("Content-Disposition", $"inline; filename=""{fileName}""")
            context.Response.BinaryWrite(fileBytes)
            context.Response.Flush()
        End If
    End While
Else
    context.Response.StatusCode = 404
End If

2. JavaScript调用逻辑无需修改

你原来的window.open("GetImageHandler.ashx?documentid=" + myDocumentID, "_blank");代码完全可用,无需调整。

验证效果

  • 图片类型资源:Edge会自动在新窗口渲染图片
  • PDF类型资源:Edge内置PDF阅读器会直接在新窗口打开PDF内容,无需额外插件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:54:04