gpt4 book ai didi

c# - 如何将 SQL Server 中存储的 pdf 字节数组显示到图像框中的 asp.net WebForm?

转载 作者:太空狗 更新时间:2023-10-29 23:25:26 28 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序,因为我需要将图像文件和一些其他文档存储在数据库中,然后我必须最好在网页上的图像框中显示它们。我已经将图像存储在数据库中,也以字节数组的形式存储了 PDF 文件,我使用通用处理程序从数据库中获取字节数组,然后将它们显示在图像框中,它适用于图像,但不适用于 PDF 文件.

public class ShowImage : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
Int32 imgID;
if (context.Request.QueryString["id"] != null)
imgID = Convert.ToInt32(context.Request.QueryString["id"]);
else
throw new ArgumentException("No parameter specified");

context.Response.ContentType = "image/jpeg";
byte[] buffer = ShowEmpImage(imgID);
context.Response.BinaryWrite(buffer);
}

public Stream ShowEmpImage(int empno)
{
dbClass db = new dbClass();
string sql = "SELECT imgfile FROM myFiles WHERE id = @ID";
SqlCommand cmd = new SqlCommand(sql, db.con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", empno);
object img = null;
try
{
db.Connect();
img = cmd.ExecuteScalar();
}
catch
{
return null;
}
finally
{
db.Disconnect();
}
return new MemoryStream((byte[])img);
}

public bool IsReusable
{
get
{
return false;
}
}
}

请指导我如何将 PDF 文件和其他一些文件显示到图像框?实际上问题是我的应用程序与现有应用程序一起运行并且无法存储文件扩展名所以我可以显示文件的唯一方法是“将它们显示为图像”但是如果他们是更好的方法然后帮助我的 friend .

最佳答案

PDF 在将其表示为图像时不起作用是有原因的……它不是图像。此外,声称它是 "image/jpeg"除非浏览器进行明确的文件头检查,否则它会变得非常糟糕,并且真的需要修复 IMO。如果您当前没有存储文件名/扩展名/MIME/其他内容,那么坦率地说:这是您需要解决的问题。

要显示 PDF,我怀疑您需要使用 <iframe>而不是 <img> ,其中 a: 可能不适用于所有浏览器,而 b: 对调用者来说可能不是很方便。就个人而言,我只提供一个下载链接(在处理程序中,使用 content-disposition 告诉浏览器将其视为下载)。

关于c# - 如何将 SQL Server 中存储的 pdf 字节数组显示到图像框中的 asp.net WebForm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com