使用Classic ASP& amp;从DB下载DOCX文件VBScript中

时间:2014-05-07 14:54:44

标签: vbscript asp-classic

我试图维护一个旧的ASP页面,该页面从数据库中检索文件并将其下载到最终用户。此页面适用于较旧的文件,但现在"腐败"具有Docx文件类型的文件。

我认为这是"腐败"较旧的文件,但Word能够处理微小的差异,而使用DocX格式的东西更挑剔。

以下是进行下载的代码。

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

    ' opening connection
    rs.Open "SELECT FileName, FileData, ContentType FROM Docs WHERE GetDocID='" & GetDoc & "'" , conn, 2, 4

    If Not rs.EOF Then
        Response.Clear()
        Response.AddHeader "Content-Disposition", "attachment; filename="& rs("FileName")
        Response.ContentType = rs("ContentType")
        Response.BinaryWrite rs("FileData")
        Response.Flush()
        'Response.Close()
        Response.End()

    End If

    rs.Close
    Set rs = Nothing

任何可能遗漏或导致问题的想法?

我注意到预上传文件比上传后文件大一个字节。

以下是上传代码:

    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset")             
    rs.Open "Docs", conn, 2, 2              
    rs.AddNew
    rs("FileName") = fileName
    rs("FileSize") = fileSize
    rs("FileData").AppendChunk = fileData
    rs("ContentType") = contentType
    rs("DocTitle") = DocTitle
    rs("ProjectID") = ProjectID                 
    rs.Update
    rs.Close
    Set rs = Nothing

1 个答案:

答案 0 :(得分:0)

尝试使用ChrB(charcode)函数以二进制显式编写 (ChrB函数将字符转换为字节)

sFileData = rs("FileName")
For i=1 To Len(sFileData)
  Response.BinaryWrite ChrB(Mid(sFileData,i,1))
Next