Actix Web在GridFS上传和下载文件
GridFS上传和下载文件
Actix-web框架下,如何通过异步编程(通过 async/await)和MongoDB的GridFS存储系统,来实现文件的上传和下载呢?
1.思路
上传文件
- HTTP请求的 multipart payload 中获取文件内容。
- 使用 GridFSBucket 将文件上传至GridFS。
- 文件全部上传后,将上传后的文件信息返回。
- 最后,返回http响应结果。
下载文件
- 从 HTTP请求的 web::Path中获取文件id。
- 使用 GridFSBucket 从GridFS获取文件数据。
- 文件获取后,将相关信息文件返回。
- 最后,返回http响应结果。
2.gridfs配置
|
|
3.gridfs上传/下载模块
新增xgridfs.rs
|
|
4.上传和下载数据体(GridFSFileData/FileData)
|
|
5.http上传和下载接口
|
|
6.测试
上传
curl命令测试
|
|
clion日志
|
|
下载
选取上面上传的1.txt作为下载的样例,暂时不考虑断点续传。
curl命令测试
|
|
clion日志
|
|
7.其它
- 1.大文件断点续传需要添加;
- 2.下载文件时,文件类型目前没有找到合适的方式获取,试了几种未果;
- 3.基于GridFS的文件重命名,文件删除,待添加;