-1

認証されたユーザーは、アカウント ページの下にいくつかのデジタル コンテンツを持っており、ダウンロードできるはずです。直接の HTML リンクを提供するのではなく、ダウンロードをクリックしてファイルを配信するだけです。私は見ました:

Django ブック: 第 13 章

Django ダウンロード ファイルが機能しない

Django ダウンロード ファイルが空です

これは関連する解決策であると思われ、他の人のために働いています。しかし、私が見ているのは、次のような意味で正しいことをしているように見えるということです:

ただし、何もダウンロードしません。また、Web サイトから PDF をダウンロードする場合のように、ダウンロードしても安全なコンテンツかどうかをブラウザが確認することもありません。

ダウンロードを許可しない可能性があるセキュリティ対策として設定されている settings.py の問題である可能性があります。しかし、それは他の何かかもしれません。

これが私が持っているものの例です:

filePath = os.path.abspath('static/media/files/' + fileName)
wrapper = FileWrapper(open(filePath), 'r')
contentType = mimetypes.guess_type(filePath)[0]
response = HttpResponse(wrapper, content_type = contentType)
response['Content-Length'] = os.path.getsize(filePath)
response['Content-Disposition'] = 'attachment; filename=%s/' % smart_str(os.path.basename(filePath))

return response

私が試した他のこと:

with open(filePath, 'rb') as f:
    return HttpResponse(f.read(), mimetype='image/jpeg')

パイソン: 2.7.4

ピップフリーズ:

Cartridge==0.8.2
Django==1.5.4
Fabric==1.8.0
Mezzanine==1.4.16
PIL==1.1.7
Pillow==2.2.1
Pillow-PIL==0.1dev
South==0.8.2
argparse==1.2.1
bleach==1.2.2
cartridge-stripe==0.1.3
distribute==0.6.34
django-zebra==0.4.3
ecdsa==0.9
filebrowser-safe==0.2.30
grappelli-safe==0.2.22
gunicorn==18.0
html5lib==0.95
oauthlib==0.6.0
paramiko==1.12.0
pisa==3.0.33
psycopg2==2.5.1
pycrypto==2.6
pytz==2013.7
requests==1.2.3
requests-oauthlib==0.3.3
stripe==1.9.6
wsgiref==0.1.2
4

1 に答える 1

0

あなたのパスに問題があると思います。

これは正しいパスを示していますか?>>

filePath = os.path.abspath('静的/メディア/ファイル/' + ファイル名)

あなたのviews.pyファイルと同じレベルの静的フォルダーの下にあるメディアディレクトリを指しているので、私はこれを求めています。

それが正しいパスであれば、別の誤解の問題もあるということです。Django は、本番環境で Django モジュールの下の静的/メディア パスからメディア ファイルも静的ファイルも提供しません。メディア ファイルは、 settings.MEDIA_ROOTが DEVELOPMENT でも表示される場所にある必要があります。

U は、これらの行をデバッグしてパスの正確性を確認することができます。問題はそれに関するものだと思います。

注: ブラウザの問題もあるはずです。これも確認してください。

于 2013-10-22T05:33:33.697 に答える