前言
笔者之前自学了下Python的轻量级Web框架Flask,学编程大家都知道,不动手实操都是假把式,这样造成的结果就是,你觉得看懂了,也听会了,但是让你自己开做个工具或项目,就是无从下手。因此,笔者在学了Flask后,想实操一下,便想到了基于flask开发个文件分享系统出来,一是为了局域网内跨设备传输方便,二是为了练习Flask。目标确立了,下面开始实操。步骤就按常规的软件开发步骤走,显示需求分析确定功能,然后对功能进行设计,再到编码实现。
需求分析
基于Flask做,那肯定是Web的应用,但是笔者并没有系统学过Web前端开发,所以只能做简单的页面,由于主要目的是学Flask,而不是前端,页面就简单点儿吧。
既然是文件分享系统,那首先要能读目录下的文件,还要提供下载功能,只能查看那不能叫分享。其次,不能只自己的文件让别人下载,别人有好的文件需要分享给自己,需要可以上传。
经过分析,那这个文件分享系统就要具备以下功能:
- 读取目录下的文件
- 读取目录下的文件夹
- 文件下载
- 文件上传
基本功能就这几个,看似应该很简单,实际就是这么简单。基本功能确定了,那么在Flask中如何实现呢?
功能设计
在《[Flask笔记]一个完整的Flask程序》文章中说过,Web访问后端的Flask程序是通过路由访问到视图函数的,如果要实现目录的浏览、文件的上传下载,就都需要定义好路由,这里需要定义三个路由,分别实现目录的浏览、文件的下载和文件的上传。
目录浏览
首先我们要指定浏览哪个目录,然后再获取这个目录下的所有文件夹和文件,将内容返给浏览器,浏览器拿到数据后对内容进行渲染,展现在用户面前。这里需要用到Flask的模板功能,将内容传给Web页面。
文件下载
用户选择想要下载的文件后,点击下载,浏览器需要将要下载的文件路径和文件名告诉后端