Django上传图片到七牛云存储

七牛云可以帮助服务器转存图片等数据,类似于Dropbox等存储服务,专注文件存储的第三方服务商,服务较好。最近做到服务器存储图片的时候就想到用七牛来做,将图片或者文件存放在七牛,然后自己服务器只存放资源存放在七牛文件的url。

这里主要说Django如何让使用七牛云插件服务

安装七牛云的包

$ pip install qiniu

Djnago项目的配置

settings.py 设置

QINIU_ACCESS_KEY = '你的七牛云access_key'
QINIU_SECRET_KEY = '你的七牛云secert_key'
QINIU_BUCKET_NAME = '你的bucket_name'

uploadpic.py 上传方法

import io
import uuid

import qiniu
from PIL import Image
from django.conf import settings

q = qiniu.Auth(settings.QINIU_ACCESS_KEY, settings.QINIU_SECRET_KEY)

def upload(img):
    _img = img.read()
    size = len(_img) / (1024 * 1024)  # 上传图片的大小 M单位
    
    image = Image.open(io.BytesIO(_img))
    
    key = str(uuid.uuid1()).replace('-', '')

    name = 'upfile.{0}'.format(image.format)  # 获取图片后缀(图片格式)
   
    if size > 1:
        # 压缩
        x, y = image.size
        im = image.resize((int(x / 1.73), int(y / 1.73)), Image.ANTIALIAS) #等比例压缩 1.73 倍
    else:
        # 不压缩
        im = image
    
    im.save('./media/' + name)  # 在根目录有个media文件
    path = './media/' + name
    
    token = q.upload_token(settings.QINIU_BUCKET_NAME, key, 3600,)
    
    qiniu.put_file(token, key, path)
    url = 'http://7u2iif.com1.z0.glb.clouddn.com/{}'.format(key)
    return url

views.py 设置

from web.uploadpic import upload

def uploadpic(request):
    img = request.FILES['file']
    url = upload(img)
    return HttpResponse(url)

此文章同时同步到我的个人博客緣來來來 » Django上传图片到七牛云存储

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 版权: https://github.com/haiiiiiyun/awesome-django-cn Aweso...
    若与阅读 23,339评论 3 241
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,103评论 2 89
  • 我们身上发生的各种事情,都有其产生的原因,这原因不是别的,就是我们自己的思想和行为。一个人的思想和行为影响一生...
    陈雪央阅读 3,165评论 0 0
  • 每个人应该都会有一个死角,会让自己感觉无能无力。 长这么大,让我感觉最无力的就是英语了,因为懒。 虽然不学英语也能...
    吴美丽同学阅读 9,468评论 27 55
  • 杨绛先生曾这样写过“年轻的时候,以为不读书不足以了解人生,直到后来才发现如果不了解人生,是读不懂书的,读书...
    xiami8412阅读 994评论 0 0