把zip或doc文件存到了SQL Server的数据库中,怎样把它读出

把zip或doc文件存到了SQL Server的数据库中,怎样把它读出,第1张

'如何打开并输出一个数据库中的文件流?

'按普通方式打开数据库,之后求得该文件字节大小,在网页中输出该文件MIME类型,再用binarywrite输出

'之前必须将以下语句放在一个页面中,而在另一个页面对之进行调用输出显示。

Set rs = Server.CreateObject("ADODB.recordset")

sql="select * from b_hn_sgbb_rtu where sgbh='02713700001' and xh='2'"

rs.open sql,cn,1,1

'以下两句是在网页中打开WORD文档

'tu_size=rs("tu").ActualSize

'Response.ContentType = rs("types")

'Response.BinaryWrite rs("tu").getChunk(tu_size)

'以下三句是将数据库中的流文件当作一个文件,可以打开也可以下载回来

Response.ContentType = "Application/octet-stream"

tu_size=rs("tu").ActualSize

Response.AddHeader "Content-Disposition", "attachmentfilename=" &rs("filename")

Response.BinaryWrite rs("tu").getChunk(tu_size)

rs.close

'常见文件的MIME类型

'GIF文件 "image/gif"

'BMP文件 "image/bmp"

'JPG文件 "image/jpeg"

'zip文件 "application/x-zip-compressed"

'DOC文件 "application/msword"

'文本文件 "text/plain"

'HTML文件 "text/html"

'一般文件 "application/octet-stream"

给您一段代码,供参考,如有问题,QQ:375267128,传给您一个完整的实例,使用时请引用一下Microsoft Word 11.0 Object Library

Function ZWord1(模板名, 文件名, 记录集, 起始行, 表号, Optional 条件 As String)

Dim doc As New Word.Document ' 定义引用 Microsoft Word 的变量。

Dim BTable As Word.Table

Dim dbs As Database '定义引用数据库的变量。

Dim rst As DAO.Recordset '定义引用记录集的变量。

Dim I, J, P As Integer

Dim s As String

'On Error GoTo err1

'使用DAO *** 作打开明细记录集

Set dbs = CurrentDb()

If Nz(条件) <>"" Then 记录集 = "select * from " &记录集 &" where " &条件

Set rst = dbs.OpenRecordset(记录集) '设置记录集

If InStr(1, UCase(模板名), ".DOC") >0 Then

WJ1 = CurrentProject.Path &"\" &模板名

'模板文件名(CurrentProject.Path为当前数据库的路径)

Else

WJ1 = CurrentProject.Path &"\" &模板名 &".DOC"

'模板文件名(CurrentProject.Path为当前数据库的路径)

End If

If InStr(1, UCase(文件名), ".DOC") >0 Then

WJ2 = CurrentProject.Path &"\" &文件名 '目标文件名

Else

WJ2 = CurrentProject.Path &"\" &文件名 &".DOC" '目标文件名

End If

FileCopy WJ1, WJ2 '拷贝文件(模板文件拷贝成目标文件)

Set doc = GetObject(WJ2, "Word.Document") '建立与Word的连接变量

doc.Application.Visible = True '打开属性为真

doc.Activate

Set BTable = doc.Application.ActiveDocument.Tables(表号)

Set rst = dbs.OpenRecordset(记录集) '设置记录集

If Not rst.EOF Then rst.MoveFirst

I = 起始行

While Not rst.EOF

Set rowNew = BTable.Rows.Add() '加入一行

J = 0

For Each HCell In BTable.Rows(I).Cells

HCell.Range.InsertAfter Nz(rst.Fields(J))

J = J + 1

Next HCell

rst.MoveNext

I = I + 1

Wend

doc.Save '保存Word

doc.Application.Quit '关闭Word

Set doc = Nothing'清除内存变量

Set BTable = Nothing

Set dbs = Nothing

Set rst = Nothing

ZWord1 = True

Exit Function

err1:

doc.Application.Quit

Set doc = Nothing '清除内存变量

Set BTable = Nothing

Set dbs = Nothing

Set rst = Nothing

ZWord1 = False

MsgBox ("出现错误,可能是Word已打开,请关闭Word后再试")

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6460998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存