PythonのDjangoはファイルを七牛クラウドにアップロードして保存したコードを共有します。

1992 ワード

最近書いているdjangoプロジェクトはユーザーが画像をアップロードする機能を実現する必要があります。七牛クラウドに使用されました。ここで記録します。ここで使っている7牛のpython SDKバージョンは7.0.3です。関数の使用は旧版とは少し違っているかもしれません。
ファイルをアップロードするには、まず自分の業務サーバにアップロードしてから、業務サーバからクラウドにアップロードする必要があります。現在7牛のフォームアップロードは直接にファイルを7牛にアップロードできます。業務サーバの中継が不要になり、流量コストを節約し、業務サーバの圧力を低減しました。また、設定により、ファイルのアップロードが完了したら、クライアントがアップロード成功の結果ページに自動的にリダイレクトすることもできます。ここで私は7牛のフォームを使ってアップロードします。
フォームアップロード
ユーザが画像をアップロードするHTMLフォームのコードは以下の通りです。ここでkeyは、写真が7牛に保存されているファイル名を指定します。tokenはアップロード証明書です。すなわち、合法性を検証し、情報を返すよう設定します。
upload.

<form method="POST" action="http://upload.qiniu.com/" enctype="multipart/form-data">
<input name="key" type="hidden" value="">
<input name="token" type="hidden" value="">
<input name="file" type="file">
<input type="submit">
</form>
上のHTMLページにジャンプするビュー関数のキーコードは以下の通りです。その中でもupload_token関数はフォーム内のtokenフィールドを生成するために使用されます。token関数の7200はアップロード証明書の有効期間を表し、アップロード成功後のリダイレクトアドレスを表し、リダイレクト時に7牛が戻ってくる情報はbase 64符号化されたjsonデータです。jsonデータを復号して取得する必要があります。アップロードエラー時にエラーメッセージが直接urlに表示され、戻ってくるjsonデータにはありません。mimeLimitを設定することで、アップロードファイルの種類を制限することもできます。
view.py

import qiniu
import uuid
ACCESS_KEY = '       '
SECRET_KEY = '       '
BUCKET_NAME = '        '
key = str(uuid.uuid1()).replace('-', '') #     uuid             。    uuid  “-”
q = qiniu.Auth(ACCESS_KEY, SECRET_KEY)
token = q.upload_token(BUCKET_NAME, key, 7200, {'returnUrl':'http://127.0.0.1:8000/photos/uploadprocessor', 'returnBody': '{"name": $(fname), "key": $(key)}', 'mimeLimit':'image/jpeg;image/png'})
return render_to_response('photos/upload.html', {'token': token, 'key': key}, context_instance=RequestContext(request))