ホームページ >バックエンド開発 >Python チュートリアル >Python の Django で Qiniu Cloud Storage にファイルをアップロードする
私が最近書いている小さな Django プロジェクトでは、ユーザーが写真をアップロードする機能を実装する必要があります。これはここに記録されています。今回使用したQiniu python SDKのバージョンは7.0.3で、旧バージョンとは機能の使い方が若干異なる場合があります。
本来、ファイルアップロードでは、まず自社の業務サーバーにファイルをアップロードし、その後業務サーバーからクラウドストレージにアップロードする必要があります。 Qiniu のフォーム アップロードでは、ビジネス サーバーによる転送を必要とせずに Qiniu にファイルを直接アップロードできるようになり、トラフィック コストが節約され、ビジネス サーバーへの負荷が軽減されます。また、設定を通じて、ファイルのアップロード完了後にクライアントがアップロード成功の結果ページに自動的にリダイレクトするようにすることもできます。ここでは Qiniu のフォームアップロードを使用しています。
フォームのアップロード
ユーザーが画像をアップロードするためのHTMLフォームのコードは次のとおりです。キーは Qiniu に保存される画像のファイル名を指定するために使用され、トークンはアップロード証明書であり、合法性の検証と返品情報の設定に使用されます。
upload.html
<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ページにジャンプするview関数内のキーコードは以下の通りです。 Upload_token 関数は、フォーム内のトークン フィールドを生成するために使用されます。upload_token 関数の 7200 は、アップロードが成功した後のリダイレクト アドレスを表します。returnBody は、リダイレクト中に Qiniu によって返される情報を表します。これは、base64 でエンコードされています。json データを取得するには、json データをデコードする必要があります。アップロード エラーが発生した場合、エラー メッセージはクリア テキストで URL に直接表示され、返される json データには含まれません。 mimeLimit を設定することで、アップロードされるファイルの種類を制限することもできます。
views.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))
Python の Django での Qiniu Cloud Storage へのファイルのアップロードに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。