【问题标题】:Why pdf files downloads as corrupted?为什么pdf文件下载为损坏?
【发布时间】:2012-09-06 16:00:30
【问题描述】:

我写了一个通过url下载文件的小程序。我可以正确打开的所有其他文件格式,但对于下载的 pdf,这是不可能的。

public static void saveFile(String fileUrl, String destinationFile) throws IOException {
    URL url = new URL(fileUrl);
    InputStream is = url.openStream();
    OutputStream os = new FileOutputStream(destinationFile);

    byte[] b = new byte[2048];
    int length;

    while ((length = is.read(b)) != -1) {
        os.write(b, 0, length);
    }
    os.flush();
    is.close();
    os.close();
}

我需要特殊的方式来处理 pdf 下载吗?

当我尝试通过浏览器中的 URL 获取选定的 pdf 时,它会正确显示

编辑

在代码中添加了flush(),仍然没有成功

尝试在浏览器 (FF) 中打开损坏的 pdf 返回错误:

文件不以“%PDF-”开头

Adobe Reader 返回:

文件无法打开,因为它不是受支持的文件类型 或者因为文件已损坏。

Damages pdf 的尺寸比原始文件小(约 80%)

【问题讨论】:

  • 电影文件是否正确下载?
  • @pst 没有电影文件,只有文本(pdf、doc、xls)和图像
  • 尝试使用与 PDF 大小相似(或更大)的不同 二进制文件 格式。还是该问题仅与特定服务器有关?
  • @pst 我认为文件大小无关紧要,因为我正在下载比这些 pdf 更大的 doc 文件
  • 文件确实不是以%PDF-开头的吗?是空的吗?它从什么开始?它实际上是否包含 HTML 错误页面或类似内容?

标签: java http url file-io download


【解决方案1】:

损坏的pdf文件里面有网站html代码。

【讨论】:

  • 何时/如果您发现为什么会发生这种情况,以及如何解决它(可能使用 HttpClient?),请展开此答案。
  • 您的代码工作正常,请确保您没有防火墙并且获得正确的 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2019-08-19
  • 1970-01-01
  • 2023-04-10
  • 2011-06-06
  • 2013-03-31
  • 1970-01-01
相关资源
最近更新 更多