【FastAPI基础】17.2、接入docker minio文件服务器操作文件,附源码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【FastAPI基础】17.2、接入docker minio文件服务器操作文件,附源码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2583字,纯文字阅读大概需要4分钟。
内容图文
引言:
最近工作中有机会接触FastAPI这个框架,所以就把官方文档看了一遍,对框架的各个特性及使用方法做了总结,会逐步的发出来,希望对您有用。
如果您之前接触过python的其他框架,看起来会非常简单和顺畅,其实就是很简单。
【上一篇】:【FastAPI基础】17、文件操作
【下一篇】:【FastAPI基础】18、表单和文件操作
【FastAPI搭建好的产品框架源码,直接上手】:【FastAPI搭建好的产品架构】,直接上手
废话不多说,直接上源码,复制直接用呗,其他的就不粘贴了,没啥特别的。
如有需要help,下面私信我
# encoding: utf-8
"""
@author: 陈建华
@file: views_minio.py
@time: 2021/4/8 10:26
"""
import platform
import shutil
import time
import datetime
from typing import List
from tempfile import NamedTemporaryFile
from fastapi import APIRouter, File, Form, UploadFile, status, Query
from minio import Minio
# from starlette.requests import Request
from server.app_file.schemas.file_schems import SystemFileIn
from server.app_file.models.file_model import system_file_db
from server import config
from server.command.extensions.responses import ResponsesExampleVale
from server.command.schemas import response_data
router = APIRouter()
@router.post(
"/upload/",
tags=["图片上传"],
# dependencies=[Depends(verify_token)],
responses=ResponsesExampleVale(
{
"code": 200,
"message": "上传成功!",
"content": {
"id": "图片id"
}
}
)
)
async def picture_upload(
# request: Request,
image_type: str = Form(..., description = "图片类型"),
file: UploadFile = File(..., description = "文件流"),
):
if image_type not in config.PICTURE_LIST:
return response_data(code=status.HTTP_404_NOT_FOUND, message=f"不存在的图片类型", data={})
sys_type = platform.system()
if sys_type == 'Windows':
temporary_delete = False
else:
temporary_delete = True
with NamedTemporaryFile(delete=temporary_delete) as tmp:
shutil.copyfileobj(file.file, tmp)
file_client = Minio(config.MinIO_URL, access_key=config.MinIO_ACCESS_KEY,
secret_key=config.MinIO_SECRET_KEY, secure=config.MinIO_SECURE)
upload_name = str(int(time.mktime(time.localtime()))) + '.' + file.filename.split('.')[1]
file_name = file.filename
# bucket_name我这儿设置成了图片类型,看下面的图
file_client.fput_object(bucket_name=image_type, object_name=upload_name,
file_path=tmp.name, content_type=file.content_type)
# 存入自己本地
insert_dict = SystemFileIn(**{'name': file_name,
'path': f'http://{config.MinIO_URL}/{image_type}/{upload_name}',
'type': image_type,
'size': file_client.stat_object(image_type, upload_name).size / 1024,
'notes': upload_name,
'status': '1',
'create_time': datetime.datetime.now()})
return response_data(data=await system_file_db.create(insert_dict))
这是minio服务的样子:
内容总结
以上是互联网集市为您收集整理的【FastAPI基础】17.2、接入docker minio文件服务器操作文件,附源码全部内容,希望文章能够帮你解决【FastAPI基础】17.2、接入docker minio文件服务器操作文件,附源码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。