【FastAPI 学习 九】图片文件上传

图片文件上传

接收上传图片字节流数据,本地保存

这个就没什么难度了,照着官网来就行了。

有一点要主注意,文档看仔细。文档地址

安装依赖

pip install python-multipart

代码

import os
import shutil
from pathlib import Path
from typing import Union, Any
from tempfile import NamedTemporaryFile
from fastapi import APIRouter, Depends, File, UploadFile

from api.common.logger import logger
from core.config import settings
from api.utils import response_code

router = APIRouter()


@router.post("/upload/file/", summary="上传图片")
async def upload_image(
        file: UploadFile = File(...)
):
    logger.info(f"用户{token_data.sub}->上传文件:{file.filename}")

    # 本地存储临时方案,一般生产都是使用第三方云存储OSS(如七牛云, 阿里云)
    save_dir = f"{settings.BASE_DIR}/assets"
    if not os.path.exists(save_dir):
        os.mkdir(save_dir)

    try:
        suffix = Path(file.filename).suffix

        with NamedTemporaryFile(delete=False, suffix=suffix, dir=save_dir) as tmp:
            shutil.copyfileobj(file.file, tmp)
            tmp_file_name = Path(tmp.name).name
    finally:
        file.file.close()

    return response_code.resp_200(data={"image": f"http://127.0.0.1:8010/assets/{tmp_file_name}"})

总结

后端上传代码很简单,那么配套前端Vue如何上传?可以关注我个人网站,同时更新Vue对接FastAPI博客

代码GitHub地址

见个人网站 https://www.charmcode.cn/article/2020-07-29_fastapi_img_upload

参考

posted @ 2020-12-25 23:10  王小右  阅读(3652)  评论(0编辑  收藏  举报