URLをクリックしてPDFをダウンロードしようとしています。私の URL が次のようになっているとします: http://foo.bar/this/downloads/pdf
URL を直接叩くと、ブラウザーは問題なく PDF をダウンロードします。ただし、を使用して PDF を取得しようとするとurllib2.urlopen
、不完全なファイルが取得されます。
url = "http://foo.bar/this/downloads/pdf"
sock = urllib2.urlopen(url)
content = sock.read()
with open('/tmp/test.pdf', 'w') as f:
f.write(content)
/tmp/test.pdf の最後の 3 行は次のようになります (変数では次のようになりますcontent
)。
0000778731 00000 n
0000778751 00000 n
000
しかし、ブラウザからダウンロードした実際のファイルは次のようになります。
0000778731 00000 n
0000778751 00000 n
0000778772 00000 n
...
%%EOF
サイズに関係なく、すべての PDF は、この最終的な数字の組み合わせのどこかで途切れているように見えます。
次の解決策を試しましたが、どちらも機能しません。その理由は、データが読み取られる方法と関係があるとは考えていませんが、そもそも がurllib2
完全な応答を取得していないという事実です。
もう 1 つの要因は (私にはよくわかりませんが)、PDF がブラウザーに送信される方法です。私の知る限り、PDF は PHP x-sendfile を使用して送信されます。PDFが部分的にダウンロードされる理由について、私は混乱しています。