2

私は単純なコードを使用しています:

import urllib2
response = urllib2.urlopen("http://www.mysite.com/getfile/4355")
output = open('myfile.zip','wb')
output.write(response.read())
output.close()

Web サーバーは IIS + ASP.NET MVC 4 です。「application/octet-stream」コンテンツ タイプの zip ファイルをラップする FileResult を返します。

問題は、ダウンロードした zip ファイルが壊れていることです。サイズはわずか 4.1kB ですが、24kB である必要があります。URLアドレスをWebブラウザに直接入力すると、ダウンロードして正常に開きます。

私の Python コードの何が問題なのか教えてください。

編集

他の2つの方法を試しました-同じ結果です。

    import urllib
    urllib.urlretrieve(url, targetFile)

    h = httplib2.Http(".cache")
    response, content = h.request(url)
    with open(targetFile, 'wb') as f:
        f.write(content)
4

3 に答える 3

1

それはばかげた質問でしたが、とにかく: コントローラーに [Authorize] 属性を設定して、匿名のリクエストを実行できないようにしました。

それを削除すると、ファイルをダウンロードできるようになりました。

とにかくありがとう。

于 2012-12-16T18:34:06.747 に答える
0

今後の参考のために、py3k では、次urllib.request.urlretrieve(the_url, the_filename)のようなファイルをダウンロードするためにのみ使用する必要があります。

import urllib.request

url = 'http://www.example.com/the-file.zip'
urllib.request.urlretrieve(url, 'filename.zip')
于 2012-12-16T18:14:32.373 に答える
0

Python の「requests」モジュールを調べてください。ピップインストールできます。コード例は次のとおりです。

>>>import requests
>>>req_obj = requests.get("http://www.myexample.com/myfile.zip")
>>>print len(req_obj)
203456

API の詳細については、こちらを参照してください...

于 2012-12-16T17:10:06.863 に答える