最近有了公司局域网内共享axure原型的需求,所以用Flask开发了一款文件上传/查看工具,记录一下其中的问题和解决方案

这个工具参照了一位大神的uploads工具 https://zhuanlan.zhihu.com/p/24429519?refer=flask,保留了其初始架构,之后对功能做了较大的改动

改动后的工具在这里,有需要的同学可以参考:

https://github.com/shuchengxiang/Uploads

docker版本见这里:

https://hub.docker.com/r/shuchengxiang/files-server

回归本意,记录历程:

需求由来:

axure生成的文件是完整的网页文件,所以本想直接把文件挂在静态服务器上就可以了,很方便,但后来想到这样就只能让我自己来传,有些麻烦,所以想做些改变。之后觉得结合svn让大家都能传到那个静态目录下就可以了,这样也比较有python思想,又发现大家用的windows和苹果在上传工具上还稍有区别,不好统一,最后觉得应该开发一款基于浏览器的工具

记录一下思路:

1、我最终想要一个类似于静态服务器的那种,可以一级一级打开目录和管理的网站,发现实现起来还是要自己思考,经过实践的解决方案是,路由用path类型的点击时加上文件名传给后台,后台读出该目录的文件或文件夹的列表,返回给前台就可以了,具体可以参考我的代码,实现之后就解决了大问题。用某个包的时候一定要看官方文档,自己体会这样是较快的上手方式。

2、本来想要上传文件夹,但是实践发现,上传文件夹的话,没有保留其目录结构,后来思考后觉得可以上传zip压缩包,上传后后台自己解压就可以了,也有其方便之处,不过zipfile模块解压出来的东西,编码不太正确,查资料说可以改源码,但是觉得改源码的话每次安装部署都要单独改呀,所以就用了个笨方法-解压出来之后再便利文件夹重命名,虽然挺笨的但上传目录不是特别复杂的话也不太影响效率

3、思路上捋顺了,实现上并没有什么难点,遇到的是一些小细节的问题,比如路由路径结尾的/,目录应该有而文件不应该有;后台os模块重命名需要切换目录,命名完之后还要切回来,否则删除文件会提示被占用;代码中路径尽量用os.path.join(),用斜杠来拼路径部署在windows和Linux上会有问题等等,慢慢解决之后,工具也就成型了

4、其实沿着这种思路下去,可以继续扩展,做一个类似云盘的东西,现在缺少的就是创建目录、重命名、移动文件之类的,如果有需要我会继续扩展,思路跟之前删除打开一样,应该没什么难点

效果图贴一下

用Flask 实现文件服务器(包含docker版本)的更多相关文章

  1. Docker 版本

    1. Docker 版本 长话短说:现在Docker改为基于YY.MM的版本(像Ubuntu),用户可以选择Stable(发布较慢)或者Edge(发布较快)版本. Docker Engine改为Doc ...

  2. Docker版本

    第一次接触到安装docker的时候,网上的 安装 有 lxc-docker, docker-engine, docker.io, docker-ce 这些包,肯定会有些迷糊.读完这篇文章你就清楚了. ...

  3. Nacos高可用集群解决方案-Docker版本

    文章主旨 本文目的是配置高可用的Nacos集群 架构图 整体架构为:Nginx + 3 x Nacos +高可用MySQL 高可用MySQL使用主从复制结构的可以参考Docker搭建MySQL主从集群 ...

  4. Docker 版本的更新和安装

    涉及到网址:1.https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#prerequisites (官网)       ...

  5. Ubuntu Docker 版本的更新与安装

    突然发现自己的docker 版本特别的低,目前是1.9.1 属于古董级别的了,想更新一下最新版本,这样最新的一下命令就可以被支持.研究了半天都没有更新成功,更新后的版本始终都是1.9.1 :蒙圈了,找 ...

  6. Docker版本升级至17.03

    2017/3/3,Docker官方发表了一篇博客,Docker版本从1.13.*直接跳入17.03,该版本的意思是17年3月.同时,还声明了Docker以后会以CE(Community Edition ...

  7. Docker版本与安装介绍

    Docker版本与安装介绍 Docker-CE 和 Docker-EE Centos 上安装 Docker-CE Ubuntu 上安装 Docker-CE Docker-CE和Docker-EE Do ...

  8. [转]Docker版本变化和新版安装

    本文转自:http://www.cnblogs.com/Peter2014/p/7704306.html Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版 ...

  9. Ubuntu Docker版本的更新与安装

    突然发现自己的docker版本特别的低,目前是1.9.1属于古董级别的了,想更新一下最新版本,这样最新的一下命令就可以被支持.研究了半天都没有更新成功,更新后的版本始终都是1.9.1 :查阅了官网资料 ...

随机推荐

  1. C#设计模式---观察者模式(Observer Pattern)

    一.目的 提供一种一对多的关系,当主题发生变化时候,可以通知所有关联的对象. 二.定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通 ...

  2. BootStrap Table超好用的表格组件基础入门

    右侧导航条有目录哟,看着更方便 快速入门 表格构建 API简单介绍 主要研究功能介绍 快速入门 最好的资源官方文档 官方文档地址****https://bootstrap-table.com/docs ...

  3. request请求《一》

    1. request对象通常用来接收客户端提交到服务端的数据,如:在servlet或者action中可以用request.getParameter()的方法获取获取参数内容: 2. requestSc ...

  4. @RequestParam注解的详细介绍

    @RequestParam (org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参. 有三个属性: (1)v ...

  5. MySQL-SQL基础-子查询

    #子查询-某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询.用于子查询的关键字主要包括: in.not in.=.!=.exists.not exist ...

  6. uni-app 小程序从零开始的开发流程

    前言 本文基于 HBuilderX 3.1.22 + 微信开发者工具 1.05.2106300为主要内容进行说明. 文档版本:1.0.0 更新时间:2021-09-03 15:32 一.准备 uni- ...

  7. GoLang设计模式01 - 建造者模式

    建造者模式是一种创建型模式,主要用来创建比较复杂的对象. 建造者模式的使用场景: 建造者模式通常适用于有多个构造器参数或者需要较多构建步骤的场景.使用建造者模式可以精简构造器参数的数量,让构建过程更有 ...

  8. python入门-变量与数据类型

    1.命名规则 变量名只能包含字母.数字和下划线.但不能以数字打头. 变量名不能包含空格 不能与关键字冲突 变量名应尽量简短且具有描述性 2.字符串 python中引号括起的内容,其中引号可以为单引号或 ...

  9. 20210712考试-2021noip11

    这篇总结比我写的好多了建议直接去看 T1 简单的序列 考场:愣了一会,想到以最大值分治.每次枚举最大值两侧更小的区间,st表预处理前缀和和最大值,用桶统计答案. 注意分治时要去掉最大值. const ...

  10. 学了这么多年C语言,你真的知道全局变量,局部变量,静态变量,本地函数,外部函数是如何区分标识的吗?

    动态库内容分析 文章目录 动态库内容分析 1. 动态库编译 1.1 第一个C文件:basic.c 1.2第二个C文件:demo.c 1.3第三个C文件:main.c 2.动态库编译 3.二进制内容分析 ...