Sql varbinary(MAX)到webbrowser控件转换PDF数据而不创建PDF文件 [英] Sql varbinary(MAX) to webbrowser control convert PDF data without create PDF file

查看:89
本文介绍了Sql varbinary(MAX)到webbrowser控件转换PDF数据而不创建PDF文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好。



我在将Varbinary数据转换为WebBrowser时遇到问题。我在sql server中上传了pdf文件。



上传代码:

Hi, Everyone.

I have an issue in convert Varbinary data to WebBrowser. i have upload pdf file in sql server.

Upload Code :

FileInfo f = new FileInfo(ofg.FileName);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
br.Close();
fs.Close();
if (bytes.Length > 0)
{
        try
        {
        string strQuery = "INSERT INTO DOC_DET (DOC_FILE) VALUES(@DOC_FILE)";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@DOC_FILE", SqlDbType.Binary).Value = bytes;
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            ex.Message.ToString();
        }
        finally { con.Close(); }
}





现在我想将该Varbinary数据检索到WebBrowser控件中





Now I want to retrieve that Varbinary data into WebBrowser Control

string sql_string = "SELECT DOC_FILE FROM DOC_DET where SEQ_NO = 1;
using (SqlCommand cmd = new SqlCommand(sql_string, con))
             {
                 con.Open();
                 Byte[] bytes = (Byte[])cmd.ExecuteScalar();
                 con.Close();

                 if (drv["DOC_TYPE"].ToString() == ".pdf")
                 {
                     MemoryStream stream = new MemoryStream(bytes);
                     webBrowser1.DocumentStream = stream;
                     webBrowser1.Show();
                 }
             }





我尝试过:



我得到这种类型的unicode显示在webbrowser控件中



输出代码:%PDF-1.4%ÿÿÿÿ340 obj<>流2017-10-10T08:36:21Z Nitro Pro 7(7. 0. 2. 8)2017-10-10T08:36:22Z 2017-10-10T08:36:22Z application / pdf Nitro Pro 7(7. 0 2. 8)uuid:4308e8b5-94b6-42d8-b4f7-4b74a08537af endstream endobj 33 0 obj<> endobj 32 0 obj<>流xÚl??»?0 E÷〜... G〜ÂCl?Ô??‡¨?b·ŠD??ÈI?þž¤-??±|}®eGíëCÍ6,ºŠ3Eh-£PpIÁƒ:ËÕr? hMœªá5½ö•ÊææO5·Ö#...ÉO¤ºå¢¼`Ö¸§Åƒ3©ZA嗯¥,$ - ;????。~ÝIP³žô和放大器;yÿ¤BÂfPqÈËq°qHÁkC¢¹£J»È±ƒí1Ç® °?ýÉõhÿà0VÅõé-?åºýIû³îL?ɻǩ¢ - ],Ó÷-Þÿÿ*È/é?;?ÿÿ?)jq& endstream endobj 31 0 obj<>streamxÚbÿÿb``h¸ÿÿAýÿý/êïï =ÿÿ?>流xÚ¤ËE?? P?ч»»»»ßÿfü?lé¢I'?þLägGÅBÇ%$¥¤edåä??•UTÕ¾Œº†|-¶Ž®ž¾??‰‰ ©YxÌ-,¬mlíì; |?ü£³<«>»‡g` /oÿÿ²`°d°b [℃F°醇I I ??€,G'GYYñ™C??????? endstream endobj 29 0 obj<>streamxÚl?? [H?a?Çÿ3»Š†• - ?¤¥ü†I <\? ?i??? AA?Ô4gIav] u?/ë%Q‰RºX£T†‰XI%]¨O{ÒÒÃ-Ò¤·P(¢ - ª·Øí̪¥ä??ïr~ÿsÎwÎ×Ör² ±è†?ÎÊ?6?} d,?ÀM@?®?Ô4œk|Ó?hÔÔÔwVg5?? X?X?EKz•×_?m?Ž¿¥œPÀ(?'(³') ¿[ohëÈ-c<



不显示PDF正确的方式。



i我不保存pdf文件直接显示文件



What I have tried:

I get This type of unicode display in webbrowser control

output code : "%PDF-1.4 %ÿÿÿÿ 34 0 obj <> stream 2017-10-10T08:36:21Z Nitro Pro 7 (7. 0. 2. 8) 2017-10-10T08:36:22Z 2017-10-10T08:36:22Z application/pdf Nitro Pro 7 (7. 0. 2. 8) uuid:4308e8b5-94b6-42d8-b4f7-4b74a08537af endstream endobj 33 0 obj <> endobj 32 0 obj <> stream xÚl»Â0 E÷~…G˜ÂClˆ„ԁ‡¨Äb·ŠDÈIþž¤- ±|}®eGíëCÍ6‚ºŠ3 Eh-£PpI Áƒ:ËÕrhMœªá5½ö•Êææ"õ5·Ö#…ÉO¤ºå¢¼`Ö¸§Åƒ3©'ŽaHm¥.‚$–;˜ÝIP³žô&yÿ¤BÂfPˆqÈËq°qHÁkC¢¹£j»È±ƒí1Ç®°?ýÉõhÿà0VÅõé—åºýIû³î LÉ» Ç©¢–],Ó÷—Þÿÿ*È/é;ÿÿ)jq& endstream endobj 31 0 obj <> stream xÚbÿÿb``h¸ÿÿAýÿý/êïï=ÿÿ> stream xÚ¤ËEPч»»»»ßÿfü lé¢I'þLägGÅBÇ%$¥¤edåä•"UTÕ¾Œº†¦–¶Ž®ž¾¡‘±‰©YxÌ-,­¬mlíì;|ü£"³‹«›»‡g`/oÿÿ²`°d°b°f°òlìì€,G'gÿÿñ™ç endstream endobj 29 0 obj <> stream xÚl[HaÇÿ3»Š†•—¤¥ü†I‹\" i©õAÔ4gIav]u/ë%Q‰RºX£T†‰X„I%]¨O{ñÒÖ Ò ¤· P(¢— ª·Øí̪¥äïr~ÿsÎwÎ×Ör² ±è†ÎÊö6}d,ÀM@®Ô4œk|Ó ˆhÍÔÔwVg5ÝX¿EKz•×_?"mŽ¿¥œÀP(.(³’¿[ohëÈ–c<"

Not Show PDF Proper way.

i am not saving pdf file direct Display file

推荐答案

- ;〜ÝIP³žô&yÿ¤BÂfPqÈËq°qHÁkC¢¹£j»È±ƒí1Ç®°?ýÉõhÿà0VÅõé-?åºýIû³îL?É»Ç ©¢ - ],Ó÷-Þÿÿ*È/é?;?ÿÿ?)jq& endstream endobj 31 0 obj<>streamxÚbÿÿb``h¸ÿÿAýÿý/êïï=ÿÿ?>streamxÚ¤ËE?? P?ч»»»»ÿÿÿ?éblock?þLägGÅBÇ%
–;˜ÝIP³žô&yÿ¤BÂfPˆqÈËq°qHÁkC¢¹£j»È±ƒí1Ç®°?ýÉõhÿà0VÅõé—åºýIû³î LÉ» Ç©¢–],Ó÷—Þÿÿ*È/é;ÿÿ)jq& endstream endobj 31 0 obj <> stream xÚbÿÿb``h¸ÿÿAýÿý/êïï=ÿÿ> stream xÚ¤ËEPч»»»»ßÿfü lé¢I'þLägGÅBÇ%


¥¤edåä??•UTÕ¾Œº†|-¶Ž®ž¾??¡ YxÌ-,¬mlíì?; |ü£³<«>»‡g` /oÿÿ²`°d°b°f°?òl?ì?ì??€,G?'?g?ñ™ç?endstream endobj 29 0 obj<>streamxÚl?? [H?a?Çÿ3»Š†• - ?¤¥ü†我<\??i© ?? AA?Ô4gIav] u?/ë%Q‰RºX£T†‰XI%¨O{ÒÒÃ-Ò¤·P(¢ - ª·Øí̪¥æ??ïrÿsÎwÎ×Ör²±è† ?ÎÊ?6?} d,?ÀM@?®?Ô4œk|Ó?hÔÔÔwVg5?? X?X?EKz•×_?m?Ž¿¥œ???ÀP(。?(³'¿[ohëÈ -c<



不显示PDF正确的方式。



i不保存pdf文件直接显示文件
¥¤edåä•"UTÕ¾Œº†¦–¶Ž®ž¾¡‘±‰©YxÌ-,­¬mlíì;|ü£"³‹«›»‡g`/oÿÿ²`°d°b°f°òlìì€,G'gÿÿñ™ç endstream endobj 29 0 obj <> stream xÚl[HaÇÿ3»Š†•—¤¥ü†I‹\" i©õAÔ4gIav]u/ë%Q‰RºX£T†‰X„I%]¨O{ñÒÖ Ò ¤· P(¢— ª·Øí̪¥äïr~ÿsÎwÎ×Ör² ±è†ÎÊö6}d,ÀM@®Ô4œk|Ó ˆhÍÔÔwVg5ÝX¿EKz•×_?"mŽ¿¥œÀP(.(³’¿[ohëÈ–c<"

Not Show PDF Proper way.

i am not saving pdf file direct Display file


您遇到的第一个问题是您正在使用ExecuteScalar。 ExecuteScalar仅返回前2033个字符 - 请参阅MSDN; SqlCommand.ExecuteScalar Method() [ ^ ]



最好的选择是返回包含数据的Datatable / DataSet。

然后我使用的代码适用于IE& Chrome如下;

First issue you have is you are using ExecuteScalar. ExecuteScalar returns the first 2033 characters only - refer to MSDN; SqlCommand.ExecuteScalar Method ()[^]

Best option is to return a Datatable/DataSet that contains your data.
Then the code I use which works in IE & Chrome is as follows;
// get the data from the datatable
byte[] bytFile = (byte[])dataTable.Rows[0][VarbinaryFieldName];
// you need to pass the file extension and MIME type & ContentType - hardcoded for brevity
// note the \ characters are to escape the " quote marks
this.Context.Response.ContentType = "\".pdf\",\"application/pdf\"";
// add Header
this.Context.Response.AddHeader("Content-disposition","attachment; filename=filename.pdf");
this.Context.Response.BinaryWrite(bytFile);
Response.End(); 





亲切的问候



Kind Regards


这篇关于Sql varbinary(MAX)到webbrowser控件转换PDF数据而不创建PDF文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆