Sql varbinary(MAX)到webbrowser控件转换PDF数据而不创建PDF文件 [英] Sql varbinary(MAX) to webbrowser control convert PDF data without create PDF file
问题描述
大家好。
我在将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屋!