以下是代码,目前这个代码是默认保存在C盘,能否有类似让用户另存为的代码。
On Error GoTo handleErr
Dim rs As ADODB.Recordset
Dim mstream As ADODB.Stream
 Dim strSql As String
 Dim abc As Boolean
Dim bytFile() As ByteSet rs = New ADODB.Recordset
    strSql = "select * from t_accessory  where FID=7 "
    abc = k3Appcon.ExecuteRs(strSql, rs)
If (abc) Then
   If (rs("FData").ActualSize > 1) Then  '判断是否为空
    '保存到文件
    bytFile = rs.Fields("FData").Value    Set mstream = New ADODB.Stream
    With mstream
        .Mode = adModeReadWrite
        .Type = adTypeBinary
        .Open
    '    .Write rs("FData")
          .Write bytFile
        .SaveToFile "C:\hj.txt"   
    End With
   
    '关闭对象
    rs.Close
    mstream.CloseEnd If
End If
 
Exit Sub
handleErr:
  MsgBox Err.Description
End Sub

解决方案 »

  1.   

    “二进制文件”用“文本文件”方式去看,当然看到的会是“乱码”啊!
    你要“另存”,直接用FileCopy不就行了?
    Call FileCopy("源文件路径", "目标位置路径")“文件路径”最好是用“全路径”的方式,免得“当前路径”不明确,造成找不到源文件,或者没复制到想要的地方去……
      

  2.   

    对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
    推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
      

  3.   

    做了个测试数据
    数据库image字段值:
    0x78DA3334440389B881112600002A0B113300VB代码段:
                                  ' rsrs("FData")是读出的Image数据类型字段
                                    Dim LngFileLen As Long, BytFile() As Byte
                                     LngFileLen = rsrs("FData").ActualSize
                                     If LngFileLen > 0 Then
                                       ReDim BytFile(LngFileLen)
                                       BytFile = rsrs("FData").GetChunk(LngFileLen)
                                       lngFreeFile = FreeFile
                                       Open "c:/a.txt" For Binary Access Write As lngFreeFile
                                       Put lngFreeFile, , BytFile()
                                       Close lngFreeFile
                                           '写数据成功标志
                                       CreateJZFile = True
                                       MsgBox CreateJZFile
                                     End If下载的a.txt文本结果:
    x趀愝N翤咃Ixa锥衹煫羊#ァb m攧
    bZK厳儋]畑3{3g3缣7囃2K?岛僡礡瑻颪N噇驥仄<{肨}G|硸SW??髅4蘖I?檦蔣棫n纞'芶F5?B雽諱
    泲论_@`?光壪?筿莫嫑€鉈'呧茷
    w*帉孪捱吼豒?誺YSOm冃"轠?@Ob0頊0釉?+硠稃k5钿墠%OFe[Λ?Z
    /B%P绥rw攀裬敱T耓??E?Oi?%?i??("脴晨@:
    "???o???▔
      

  4.   

    你把你上传的文件扩展名改为txt打开看看是什么
      

  5.   


    上传的txt内容:数据库image存储的结果
    0x78DA0165009AFF20312E424F5320BCD3BAC5B5A5B1EDD2BBD0D0B7D6C1BDD0D00D0A0D0A322EC1D0D6AEBCE4B5C4B9D8CFB528CAF4D0D4C0EFCCEDBCD3A1AFCAC2BCFEA1AE290D0A0D0A332E6D697372736F66742064616F20332E3628D5EBB6D4B5F7D3C361636565737329720C3724
    下载的txt内容:测试数据如果是excel或word就全部是乱码,图片就无法打开
      

  6.   

    excel word 图片是其他测试数据,不是txt的内容
      

  7.   

    你在8楼贴的内容:数据库image存储的结果
    0x78DA0165009AFF20312E424F5320BCD3BAC5B5A5B1EDD2BBD0D0B7D6C1BDD0D00D0A0D0A322EC1D0D6AEBCE4B5C4B9D8CFB528CAF4D0D4C0EFCCEDBCD3A1AFCAC2BCFEA1AE290D0A0D0A332E6D697372736F66742064616F20332E3628D5EBB6D4B5F7D3C361636565737329720C3724上面这段“编码”,红色部分是“多余的内容”,中间黑色部分就是你的“原文”。
    把头、尾去掉就行了,说不定那两部分都是“固定长度”的。