圖片文件上傳
接收上傳圖片字節流數據,本地保存
這個就沒什么難度了,照着官網來就行了。
有一點要主注意,文檔看仔細。文檔地址
安裝依賴
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