python图片上传和查看,可以传中文图片名字

 python图片上传和查看,可以传中文图片名字

# 图片上传
@app.route('/api/upload/', methods=['POST'])
def upload_avatar():
    basedir = os.path.abspath(os.path.dirname(__file__))
    file_dir = os.path.join(basedir, "upload")
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['file']
    if f and allowed_file(f.filename):
        fname = secure_filename(f.filename)
        ext = fname.rsplit('.', 1)
        if len(ext) == 2:
            ext = ext[1]
        else:
            ext = ext[0]
        new_filename = create_uuid() + '.' + ext
        f.save(os.path.join(file_dir, new_filename))
        return jsonify({"code": 0, "msg": "上传成功",'data':new_filename})
    else:
        return jsonify({"code": 1, "msg": "上传失败"})


# 查看图片
@app.route('/img/<string:filename>', methods=['GET'])
def show_photo(filename):
    basedir = os.path.abspath(os.path.dirname(__file__))
    file_dir = os.path.join(basedir, "upload")
    if request.method == 'GET':
        if filename is None:
            pass
        else:
            image_data = open(os.path.join(file_dir, '%s' % filename), "rb").read()
            response = make_response(image_data)
            response.headers['Content-Type'] = 'image/png'
            return response
    else:
        pass


# 设置允许的文件格式
def allowed_file(filename):
    ALLOWED_EXTENSIONS = ['png', 'jpg', 'JPG', 'PNG', 'bmp']
    return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

def create_uuid():  # 生成唯一的图片的名称字符串,防止图片显示时的重名问题
    import datetime,random
    nowTime = datetime.datetime.now().strftime("%Y%m%d%H%M%S");  # 生成当前时间
    randomNum = random.randint(0, 100);  # 生成的随机整数n,其中0<=n<=100
    if randomNum <= 10:
        randomNum = str(0) + str(randomNum);
    uniqueNum = str(nowTime) + str(randomNum);
    return uniqueNum;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值