美文网首页
文件上传

文件上传

作者: dittoyy3991 | 来源:发表于2024-07-13 20:40 被阅读0次
    from fastapi import FastAPI, File, UploadFile
    from typing import List
    import uvicorn
    import fastapi_cdn_host
    
    
    app = FastAPI()
    fastapi_cdn_host.patch_docs(app)
    # 客户端 选择发送的文件->服务器接收->网站程序判断->临时文件->移动到指定的路径
    # 服务器 接收的资源程序
    # 服务器接收资源代码
    
    # 单小文件上传
    # 文件上传,文件会放在请求体里面,但是请求头的content-type是multipart/form-data
    # file: bytes = File():适合小文件上传
    @app.post("/files/")
    # 文件时字节流类型,是fastapi里面的File类型
    async def create_file(file: bytes = File()):
        print("file:", file)
        return {"file_size": len(file)}
    
    
    # 多文件上传
    @app.post("/multiFiles/")
    async def create_files(files: List[bytes] = File()):
        for file in files:
            print(len(file))
        return {"file_sizes": [len(file) for file in files]}
    
    
    
    # file: UploadFile:适合大文件上传,比较常用
    
    @app.post("/uploadFile/")
    #直接对应UploadFile类型数据
    async def create_upload_file(file: UploadFile):
        #打印文件名称
        print('file',file.filename)
        #将上传的文件保存到服务本地
        with open(f"{file.filename}", 'wb') as f:
            #一次读取1024字节,循环读取写入
            for chunk in iter(lambda: file.file.read(1024), b''):
                f.write(chunk)
    
        return {"filename": file.filename}
    
    
    # 上传多个文件
    @app.post("/multiUploadFiles/")
    async def create_upload_files(files: List[UploadFile]):
        for file in files:
            print(file.filename)
            # 将上传的文件保存到服务本地
            path = os.path.join('images', f'{file.filename}')
            with open(path, 'wb') as f:
                # 一次读取1024字节,循环读取写入
                for chunk in iter(lambda: file.file.read(1024), b''):
                    f.write(chunk)
    
        return {"filenames": [file.filename for file in files]}
    
    
    
    if __name__ == '__main__':
        #注意,run的第一个参数 必须是文件名:应用程序名
        uvicorn.run("file1:app", port=8080,  reload=True)
    
    

    相关文章

      网友评论

          本文标题:文件上传

          本文链接:https://www.haomeiwen.com/subject/xnyxhjtx.html