写点什么

FastApi-13- 文件上传 -1

发布于: 2021 年 08 月 15 日
FastApi-13-文件上传-1

文件对象

前面我们已经了解了 Form 表单,其多用于数据提交。今天我们一起来看下文件的上传,同样也需要使用到 Form 表单。


文件上传我们需要借助 FastApi 为我们提供的 File 对象和 UploadFile 对象。File 对象为 bytes 类型,我们可以理解为文件本体。UploadFile 对象为文件的元数据。

上传页面 &试图函数

@app.get('/f/')async def ff(request:Request):    return templates.TemplateResponse('f1.html',{"request":request})
复制代码


<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>UP-F</title></head><body>    <form action="/upfile/" method="post" enctype="multipart/form-data">        <input type="file" name="file_list" multiple>        <input type="submit" value="点击显示文件大小">    </form>    <form action="/upfile1/" method="POST" enctype="multipart/form-data">        <input type="file" name='upload_list'>        <input type="submit" value="点击显示文件名称">    </form></body></html>
复制代码



上传页面主要是一个 Form 表单,其中有一个类型为 fileinput 标签,用于选择文件,submit 类型的 input 标签用于提交文件。

File 类型文件上传

from fastapi import File,UploadFilefrom typing import List
@app.post('/upfile/')async def up_f(request:Request,file_list:List[bytes]=File(...)): return templates.TemplateResponse('f.html',{"request":request,"file_sizes":[len(dd)/1024 for dd in file_list]})
复制代码


File 类型的文件,因为其为文件本身,所以我们可以拿到其大小,但是它没有文件名称等属性。

信息展示页面

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>File</title></head><body>    <h1>文件大小:{{ file_sizes }} KB</h1>    <h1>文件名字:{{ file_names }}</h1></body></html>
复制代码


我们在第一个文件上传框中选择文件,点击显示文件大小



因为我们的两种类型的上传写在了同一个页面,而且我们没有选择第二个文件,所以文件大小的值是没有的。

UploadFile 类型文件上传

from fastapi import File,UploadFilefrom typing import List
@app.post('/upfile1/')async def up_f1(request:Request,upload_list:List[UploadFile]=File(...)): return templates.TemplateResponse('f.html',{"request":request,"file_names":[dd.filename for dd in upload_list]})
复制代码


可以看到,up_f1 的入参类型已经是 UploadFile 了,这样我们就可以拿到其名称,类型等数据。

信息展示页面

两种类型的信息展示页面,我们使用的同一个。



我们看到,名称已经展示出来了。


感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

发布于: 2021 年 08 月 15 日阅读数: 7
用户头像

公众号:Python测试和开发 2018.10.14 加入

混迹于云原生领域的测试开发。

评论

发布
暂无评论
FastApi-13-文件上传-1