Rust:axum学习笔记(4) 上传文件

上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素:

1. 文件上传的大小限制

2. 文件上传的类型限制(仅限指定类型:比如图片)

3. 防止伪装mimetype进行攻击(比如:把.js文件改后缀变成.jpg伪装图片上传,早期有很多这类攻击)

另外,上传图片后,还可以让浏览器重定向到上传后的图片(当然,仅仅只是演示技术实现,实际应用中并非一定要这样)

先展示一个简单的上传文件的表单:

上传后,用/save_image来处理图片上传

上面的代码,如果上传成功,将自动跳转到/show_image来展示图片:

最后是路由设置:

运行效果:

1. 初始上传表单:

2. 文件尺寸太大时


3.文件类型不对时

从输出日志上看

2022-01-23T03:56:33.381051Z DEBUG request{method=POST uri=/save_image version=HTTP/1.1}: tower_http::trace::on_request: started processing request
没有上传文件或文件格式不对
2022-01-23T03:56:33.381581Z DEBUG request{method=POST uri=/save_image version=HTTP/1.1}: tower_http::trace::on_response: finished processing request latency=0 ms status=302

已经正确处理,并发生了302重定向,但是浏览器里会报错connection_reset(不知道是不是axum的bug)

4. 成功上传后

最后附上完整代码:

cargo.xml

main.rs

  

posted @   菩提树下的杨过  阅读(2281)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2016-01-23 docker学习(1) 安装
2016-01-23 maven/gradle 打包后自动上传到nexus仓库
2014-01-23 jboss上的soap web service开发示例
2014-01-23 jboss的时区问题
2014-01-23 JAVA JPA - 示例用法
点击右上角即可分享
微信分享提示