Heim  >  Artikel  >  Backend-Entwicklung  >  Laden Sie Dateien in Pythons Django in den Qiniu Cloud Storage hoch

Laden Sie Dateien in Pythons Django in den Qiniu Cloud Storage hoch

高洛峰
高洛峰Original
2017-03-03 15:31:442562Durchsuche

Ein kleines Django-Projekt, das ich kürzlich schreibe, muss die Funktion zum Hochladen von Bildern durch Benutzer implementieren. Es verwendet Qiniu Cloud Storage, was hiermit aufgezeichnet wird. Die Version des Qiniu Python SDK, die ich hier verwende, ist 7.0.3, und die Funktionsnutzung kann sich geringfügig von der alten Version unterscheiden.

Der ursprüngliche Datei-Upload erfordert das Hochladen der Datei zuerst auf Ihren eigenen Unternehmensserver und dann das Hochladen der Datei vom Unternehmensserver in den Cloud-Speicher. Jetzt kann Qinius Formular-Upload Dateien direkt auf Qiniu hochladen, ohne dass eine Übertragung durch den Unternehmensserver erforderlich ist, wodurch Verkehrskosten gespart und die Belastung des Unternehmensservers verringert wird. Und über die Einstellungen können Sie den Client auch automatisch zu einer erfolgreichen Upload-Ergebnisseite weiterleiten lassen, nachdem der Datei-Upload abgeschlossen ist. Hier verwende ich den Formular-Upload von Qinius.

Formular-Upload

Der HTML-Formularcode für Benutzer zum Hochladen von Bildern lautet wie folgt. Der Schlüssel wird verwendet, um den Dateinamen des in Qiniu gespeicherten Bildes anzugeben, und das Token ist das Upload-Zertifikat, das zur Überprüfung der Rechtmäßigkeit und zum Festlegen der Rückgabeinformationen verwendet wird.

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>

Der Schlüsselcode in der Ansichtsfunktion, der zur obigen HTML-Seite springt, lautet wie folgt . Die Funktion upload_token wird verwendet, um das Token-Feld im Formular 7200 in der Funktion upload_token zu generieren. returnUrl stellt die Umleitungsadresse nach erfolgreichem Hochladen dar. Es handelt sich um eine Base64-codiert Die JSON-Daten müssen dekodiert werden, um die JSON-Daten zu erhalten. Wenn ein Upload-Fehler auftritt, erscheint die Fehlermeldung direkt in der URL im Klartext und wird nicht in die zurückgegebenen JSON-Daten aufgenommen. Sie können auch die Arten der hochgeladenen Dateien einschränken, indem Sie mimeLimit festlegen.

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))

Weitere Artikel zum Hochladen von Dateien in Qiniu Cloud Storage in Pythons Django finden Sie auf der chinesischen PHP-Website !


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn