如何image字段内容转换出string

chinasqf 2006-10-27 11:10:50
sql库里目前存放各种文档,比如pdf,word,txt等 以二进制方式存放在image字段里

使用的方式
int filelength= File1.PostedFile.ContentLength;
byte[] FileByteArray = new byte[filelength];
Stream StreamObject = File1.PostedFile.InputStream;
StreamObject.Read(FileByteArray,0,filelength);
.......
现在是要把这些东西从库里读出来要读到string里
(不要使用把文件写到磁盘上,然后再转换到txt的方法)


string sqlstr="select * from wzfj where wzfjid=120" ;
SqlDataReader sdr=ExecuteReader(sqlstr);

if (sdr.Read())
{
Byte[] FileByteArray = new Byte[200000]; //文件临时储存Byte数组
FileByteArray=(byte[])(sdr["nr"]);
string getstring = getFnS( FileByteArray)


}



getFnS怎么写?
...全文
227 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
aafshzj 2006-10-27
  • 打赏
  • 举报
回复
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.Charset="GB2312";// 自己可以改
Response.ContentEncoding=System.Text.Encoding.UTF8;// 自己可以改
Response.ContentType = "application/octet-stream";//自己可以改
Response.AddHeader("Content-Disposition", "attachment; filename="+ fn);// 自己可以改
Response.AddHeader("Content-Length", fl);// 自己可以改
// loop
Response.BinaryWrite(byteBuffer);BinaryWrite
// finish loop
Response.Flush();
Response.End();
aafshzj 2006-10-27
  • 打赏
  • 举报
回复
response必须输出文件?

没有啊,输出二进制流也可以啊。你如果只是response输出,可以不用转换直接输出。
chinasqf 2006-10-27
  • 打赏
  • 举报
回复
content-type是保存到库里的 但response必须输出文件
看来直接读word没戏了
孟子E章 2006-10-27
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/article/EBD43E74-1BDE-43AA-DEAF-211FA24A7BC2/read.aspx
aafshzj 2006-10-27
  • 打赏
  • 举报
回复
如果你要做统一文档保存的话,建议你保存时,也保存其content-type到数据库中,以便打开的时候能够判断其格式,这样通过response输出也容易。
aafshzj 2006-10-27
  • 打赏
  • 举报
回复
html是可以的,只要编码正确。

word就不行了,你可以用普通文本工具打开word文档看一看,在那里看到的和你在这里打开看到的差不多,都是乱七八糟,因为它的字符和格式不是按ascii存的,而是用二进制保存。
aafshzj 2006-10-27
  • 打赏
  • 举报
回复
问题是你写进去的时候是什么string?如果本来没用string,那现在转成string也没意义啊。如果原来是string,那么只要你确保使用正确的Encoding Type去GetEnoding再处理就不会有问题的。建议你在保存前都把string格式转换成utf-8,加载的时候也用utf-8。

如果你皴法的是其它格式文档,那就只好用其他格式提供的方式打开了。
chinasqf 2006-10-27
  • 打赏
  • 举报
回复
那我word,html呢?
lovvver 2006-10-27
  • 打赏
  • 举报
回复
因为这些文本含有编辑器的信息在里面,所以你直接把byte[]转成string肯定都是乱码了。对于你想读pdf等文件里的文字,你需要有pdf方面的类库。不能直接读。
chinasqf 2006-10-27
  • 打赏
  • 举报
回复
用return System.Text.Encoding.Default.GetString(FileByteArray);
如果里面是txt文件 显示是正常的
word,pdf都不行
股神 2006-10-27
  • 打赏
  • 举报
回复
up
chinasqf 2006-10-27
  • 打赏
  • 举报
回复
用过的 的到是乱码

public static string getFnS(byte[] characters)
{
UnicodeEncoding encoding = new UnicodeEncoding( );
string constructedString = encoding.GetString(characters);
//string constructedString = Encoding.UTF8.GetString (characters);
return (constructedString);
}
aafshzj 2006-10-27
  • 打赏
  • 举报
回复
return System.Text.Encoding.Default.GetString(FileByteArray);

如果你希望换一种Enocoding方式,比如utf-8,那就
return System.Text.Encoding.GetEncoding("utf-8").GetString(FileByteArray);
发帖
C#

10.9w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-27 11:10
社区公告

让您成为最强悍的C#开发者