ホームページ  >  記事  >  バックエンド開発  >  Python の Django で Qiniu Cloud Storage にファイルをアップロードする

Python の Django で Qiniu Cloud Storage にファイルをアップロードする

高洛峰
高洛峰オリジナル
2017-03-03 15:31:442517ブラウズ

私が最近書いている小さな 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 = &#39;七牛分配的公钥&#39;
SECRET_KEY = &#39;七牛分配的私钥&#39;
BUCKET_NAME = &#39;保存文件的仓库名&#39;
key = str(uuid.uuid1()).replace(&#39;-&#39;, &#39;&#39;) # 这里使用uuid作为保存在七牛里文件的名字。并去掉了uuid中的“-”
q = qiniu.Auth(ACCESS_KEY, SECRET_KEY)
token = q.upload_token(BUCKET_NAME, key, 7200, {&#39;returnUrl&#39;:&#39;http://127.0.0.1:8000/photos/uploadprocessor&#39;, &#39;returnBody&#39;: &#39;{"name": $(fname), "key": $(key)}&#39;, &#39;mimeLimit&#39;:&#39;image/jpeg;image/png&#39;})
return render_to_response(&#39;photos/upload.html&#39;, {&#39;token&#39;: token, &#39;key&#39;: key}, context_instance=RequestContext(request))

Python の Django での Qiniu Cloud Storage へのファイルのアップロードに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。