fastapi 文件的操作/上传/下载/保存(uploadfile)

客户端上传文件到服务端并保存

使用fastapi的uploadfile,不管客户端上传的是何种格式的文件(图片/视频/音频等),都不需要解码操作。

在这里插入图片描述内在原因:通过uploadfile.file.read()获取的虽然是bytes,但已经包含了全部的格式信息。所以将bytes直接写入文件进行保存,就会在文件系统中看到正常的image/video等文件了。如下图所示:
在这里插入图片描述
而且,即使保存成文件时,文件后缀与原文件不一致,也没有关系。如下图所示,客户端上传的文件为movie.mp4,在服务端保存成movie, movie.xys, movie.mp4都可以用视频软件播放。即使被保存为movie.doc,也可以用视频软件播放。
在这里插入图片描述所以,上传文件的保存非常简单。如以下博客所示:
fastapi 使用UploadFile方法获取图片文件后存储在本地的方法
FastAPI 编写接收文件接口、requests 发送请求

FastApi下载文件

FastApi下载文件

Fastapi中图片文件之间的转换: uploadfile-bytes-cv2-base64等

cv2 pillow base64 bytes uploadfile 图片文件之间的转换 FastAPI

文本格式不能很好显示,请见谅(附件里有比较齐整的excel表格统计) 大小类型 传输类型 api方法 文件大小 花费时间 速率byte/ms 速率mb/s 缓存数组 次数 备注 大文件 下载 download_file(group_name, remote_filename, localFile) 1073741824(约1G) 28343ms 37883 36.12804413 无 1 下载 download_file(group_name, remote_filename , downloadStream) 1073741824(约1G) 29195ms 36778 35.07423401 0 1 fastDFS的DownloadStream,FileOutputStream 下载 download_file(group_name, remote_filename , downloadStream) 1073741824(约1G) 24352ms 44092 42.04940796 2K 1 fastDFS的DowloadStream,BufferedOutputStream 下载 download_file(group_name, remote_filename , DownloadCallback) 1073741824(约1G) 24831ms 43241 41.23783112 2K 1 实现DownloadCallback,BufferedOutputStream 下载 download_file(group_name, remote_filename , DownloadCallback) 1073741824(约1G) 25922ms 41422 39.50309753 8K 1 实现DownloadCallback,BufferedOutputStream 普通文件 下载 download_file(group_name, remote_filename, localFile) 59113472(约56M) 382ms 154747 147.5782394 无 1 下载 download_file(group_name, remote_filename , downloadStream) 59113472(约57M) 369ms 160199 152.7776718 0 1 fastDFS的DownloadStream,FileOutputStream 下载 download_file(group_name, remote_filename , downloadStream) 59113472(约58M) 499ms 118702 113.2030487 2K 1 fastDFS的DowloadStream,BufferedOutputStream 下载 download_file(group_name, remote_filename , DownloadCallback) 59113472(约59M) 592ms 99853 95.22724152 2K 1 实现DownloadCallback,BufferedOutputStream 下载建议:100M内数据使用fastDFS提供的DownloadStream;大于1G的数据,使用BufferedOutputStream和DowloadStream
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值