【问题标题】:Trying to stream a PDF file from server1 to server2 getting file is “damaged file”尝试将 PDF 文件从 server1 流式传输到 server2 获取文件是“损坏的文件”
【发布时间】:2011-11-09 13:38:21
【问题描述】:

我在 server1 文件夹路径 (d:\files\a.pdf) 中有 pdf 和 doc 文件,现在我想从 server1 中读取文件 server2 并在弹出窗口中显示选项保存并打开。

下面是我在server1中编写的代码:

如果 File.Exists(d:\files\a.pdf) 那么 Dim fs As New FileStream(isFullFilePath & filename, FileMode.Open, FileAccess.Read, FileShare.Read) '尝试 试试

            fs = New FileStream(isFullFilePath & filename, FileMode.Open, FileAccess.Read, FileShare.Read)
            '        Catch ex As FileNotFoundException
            'UploadDoc.PostedFile.SaveAs(UploadDoc.PostedFile.FileName)
            '    fs = New FileStream(UploadDoc.PostedFile.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
            'End Try

            Dim byteArray(fs.Length) As Byte
            fs.Read(byteArray, 0, fs.Length)

            Response.ContentType = "application/pdf"
            Response.BinaryWrite(byteArray)

        Catch ex As Exception
        Finally
            fs.Close()

        End Try

在 server2 中:

            Dim objHttpWebRequest As HttpWebRequest
            Dim objHttpWebResponse As HttpWebResponse
            objHttpWebRequest = HttpWebRequest.Create(DownloadURL)
            objHttpWebRequest.Method = WebRequestMethods.Http.Post

            objHttpWebRequest.Timeout = 600000
            objHttpWebRequest.MaximumResponseHeadersLength = 80000000
            objHttpWebResponse = objHttpWebRequest.GetResponse()

            If objHttpWebResponse.StatusCode = HttpStatusCode.OK Then

                'Dim dataStream As Stream = objHttpWebResponse.GetResponseStream

                Dim BArr(objHttpWebResponse.ContentLength - 1) As Byte
                'Dim fs As StreamWriter

                'Request.InputStream.Read(BArr, 0, objHttpWebResponse.ContentLength)
                objHttpWebResponse.GetResponseStream.Read(BArr, 0, objHttpWebResponse.GetResponseStream.ReadByte)

                Response.ContentType = "application/pdf"
                Response.Charset = "UTF-8"
                Response.AddHeader("Content-Disposition", "attachment;filename=" & strFileNameID(0))
                Response.AddHeader("Content-Length", objHttpWebResponse.ContentLength)
                Response.BinaryWrite(BArr)

但收到错误 PDF 是损坏的,花费 8 小时后.....

请帮帮我

提前致谢 拉格文德拉

【问题讨论】:

    标签: asp.net file-io pdf-generation


    【解决方案1】:

    您的网站是否启用了压缩功能?我不知道服务到服务,但我知道压缩会破坏 pdf 的浏览器 - 你可能会遇到同样的问题。

    这是一个遭受压缩问题困扰的人的链接:

    http://www.griffincaprio.com/blog/2006/11/iis-http-compression-and-streaming-pdfs-dont-do-it.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2015-03-14
      相关资源
      最近更新 更多