【FastAPI后台API 九】图片上传

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地址

自己改的FastAPI项目生成器 https://github.com/CoderCharm/fastapi-mysql-generator

GitHub https://github.com/CoderCharm/FastAdmin/blob/master/backend/app/api/api_v1/utils/views.py

对应的Vue前端上传代码(2021/01/25更新) 大概就是这里了

参考


文章作者: 王小右
版权声明: 咳咳想白嫖文章?本文章著作权归作者所有,任何形式的转载都请注明出处。 https://www.charmcode.cn !
还能输入 100 字
  目录