杨一凡L 2022-03-04 14:21 采纳率: 0%
浏览 55

C# winform 获取到的 blob 文件怎样直接预览??

将oracle查询出来的blob(doc,pdf,jpg)的数据预览出来,不下载到本机;附存入数据库的代码:
      string connStr ="user id=test;data source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.109)(PO    RT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)));password=test1;Persist Security Info=True;enlist=false;"
        OracleConnection conn = new OracleConnection(connStr);
        OracleCommand cmd = conn.CreateCommand();
        conn.Open();
            //读取文件
            FileStream fs = File.OpenRead(filePath);
            byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 0, buffer.Length);
            OracleParameter paramFileContent = cmd.CreateParameter();
            paramFileContent.OracleType = OracleType.Blob;
            paramFileContent.ParameterName = "FileContent";
            paramFileContent.Direction = ParameterDirection.Input;
            paramFileContent.Value = buffer;
            cmd.Parameters.Add(paramFileContent);
            string fileName = Path.GetFileNameWithoutExtension(filePath);//文件名
            //string fileExtension = Path.GetExtension(filePath).ToUpper().Split('.')[1];//拓展名
            string sqlStr = @"insert into test(id, file_name, file_mes) values (sys_guid(), fileName , :FileContent)";
            cmd.CommandText = sqlStr;
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            result = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            conn.Close();
查询出来blob后直接转码乱码

byte[] b = (byte[])focusRow["FILE_MES"];
String Content = Encoding.UTF8.GetString(b);
String Content = Encoding.Unicod.GetString(b);
String Content = Encoding.Default.GetString(b);
如果直接保存( File.WriteAllBytes(@"" + downLoadUrl, byte[] b)没有问题。

从数据库查询出来后直接在PdfViewer 中显示出来文件信息,不需要保存到本机
  • 写回答

2条回答 默认 最新

  • 於黾 2022-03-04 14:54
    关注

    首先要看你blob里存的到底是个什么东西呀
    你存二进制文件那当然没问题,反正最后是对应的app去打开它
    如果你想直接在内存里打开,那就得知道它到底是个什么格式,然后对应的方式打开
    如果是个图片,你要转image然后显示在picturebox里,如果是富文本你需要放到richtextbox里,你无脑把什么都转字符串可不乱码吗

    评论

报告相同问题?

问题事件

  • 修改了问题 3月4日
  • 修改了问题 3月4日
  • 修改了问题 3月4日
  • 修改了问题 3月4日
  • 展开全部

悬赏问题

  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡