Maison >développement back-end >Tutoriel Python >Télécharger des fichiers sur Qiniu Cloud Storage dans Django de Python

Télécharger des fichiers sur Qiniu Cloud Storage dans Django de Python

高洛峰
高洛峰original
2017-03-03 15:31:442645parcourir

Un petit projet Django que j'écris récemment doit implémenter la fonction permettant aux utilisateurs de télécharger des images. Il utilise Qiniu Cloud Storage, qui est enregistré ici. La version du SDK Qiniu python que j'utilise ici est la 7.0.3 et l'utilisation de la fonction peut être légèrement différente de l'ancienne version.

Le téléchargement du fichier d'origine nécessite d'abord de télécharger le fichier sur votre propre serveur d'entreprise, puis de télécharger le fichier du serveur d'entreprise vers le stockage cloud. Désormais, le téléchargement de formulaires de Qiniu peut télécharger directement des fichiers vers Qiniu, sans avoir besoin d'un transfert par le serveur d'entreprise, ce qui permet d'économiser les coûts de trafic et de réduire la pression sur le serveur d'entreprise. Et via les paramètres, vous pouvez également laisser le client rediriger automatiquement vers une page de résultats de téléchargement réussi une fois le téléchargement du fichier terminé. Ici, j'utilise le téléchargement de formulaire de Qiniu.

Téléchargement du formulaire

Le code du formulaire HTML permettant aux utilisateurs de télécharger des images est le suivant. La clé est utilisée pour spécifier le nom de fichier de l'image enregistrée dans Qiniu, et le jeton est le certificat de téléchargement, qui est utilisé pour vérifier la légalité et définir les informations de retour.

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>

Le code clé dans la fonction d'affichage qui accède à la page HTML ci-dessus est le suivant . La fonction upload_token est utilisée pour générer le champ de jeton dans le formulaire. 7200 dans la fonction upload_token représente la période de validité du bon téléchargé. returnUrl représente l'adresse de redirection après un téléchargement réussi. returnBody représente les informations renvoyées par Qiniu lors de la redirection. encodé en base64 Les données json doivent être décodées pour obtenir les données json Lorsqu'une erreur de téléchargement se produit, le message d'erreur apparaît directement dans l'URL en texte clair et ne sera pas inclus dans les données json renvoyées. Vous pouvez également limiter les types de fichiers téléchargés en définissant 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))

Pour plus d'articles sur le téléchargement de fichiers vers Qiniu Cloud Storage dans Django de Python, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn