Python上传图片方法

from sanic.response import json,html
import os
import datetime
import shutil
import magic
from trump.query import create_item,get_items,modify_items,modify_item
from config import UPLOAD_PATH,UPLOAD_PATH_ORIGINAL


allow_mime_type = {
    "image/png": "png",
    "image/jpeg": "jpg",
    "image/jpg": "jpg",
    "image/gif": "gif",
    "image/webp": "webp",
}

async def save_file(request,file):
    t = datetime.datetime.now()
    filepath = os.path.join(UPLOAD_PATH,
                            t.strftime('%Y%m%d'))
    if not os.path.isdir(filepath):
        os.mkdir(filepath)
    ori_filepath = os.path.join(UPLOAD_PATH_ORIGINAL,
                                t.strftime('%Y%m%d'))
    if not os.path.isdir(ori_filepath):
        os.mkdir(ori_filepath)
    timestamp = t.strftime("%H%M%S%f.")
    filename = os.path.join(filepath, timestamp)
    with open(filename + 'tmp', 'wb+') as f:
        f.write(request.files.get('file').body)
    mimetype = magic.from_file(filename + 'tmp', mime=True)
    suffix = allow_mime_type.get(mimetype)
    if not suffix:
        os.remove(filename + 'tmp')
        return 1, json({"status": 3, "data": "不允许的文件类型。"})
    if suffix in ("png", "jpg", "webp"):
        shutil.copyfile(filename + 'tmp', os.path.join(
            ori_filepath,
            timestamp + suffix),
                        )
        shutil.copyfile(filename + 'tmp', filename + suffix)
    else:
        os.rename(filename + 'tmp', filename + suffix)
    url = UPLOAD_PATH + os.path.join(t.strftime('%Y%m%d'), t.strftime("%H%M%S%f." + suffix))
    return url
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值