Python 文件共享服务器
时间:2021-08-05
本文章向大家介绍Python 文件共享服务器,主要包括Python 文件共享服务器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
基于Flask的Web文件共享
标签:Python, Flask
之前用Java写过一个文件系统,很简陋,一次只能上传一个文件且无回显,这次重新用Python写了一个,因为只需要一个很小的服务,所以就选用Flask了
效果如图:
使用说明:
注:服务器基于Flask,和Python,确保有相应环境
安装flask命令: pip install flask
若是整个打包下载的,解压后路径下有个运行脚本(运行.bat)双击运行就行了。文件共享区域为此运行脚本所在文件夹。也就是把文件放入此文件夹,就可以被找到和下载,同样的任意上传的文件也会被放到该目录下。
上传:拖到指定区域或者浏览本地选择上传均可
下载:点击文件即可下载
打包下载
链接:https://pan.baidu.com/s/1MDX8iLjjaOSHqDtWoRMOZg
提取码:kkkk
源代码
代码量比较少,就没传github了
app.py
from flask import Flask, render_template, send_from_directory, request
import os
import socket
from gevent import pywsgi
app = Flask(__name__)
@app.route('/')
def index():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
path = os.getcwd()
files = list(os.walk(path))[0][2]
files.remove('运行.bat')
return render_template('index.html', files=files, ip=ip)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files['files']
f.save(os.path.join(os.getcwd(), f.filename))
return '{}'
@app.route('/download/<filename>/')
def download(filename):
return send_from_directory(os.path.pardir, filename, as_attachment=True)
if __name__ == '__main__':
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
print('复制' + ip + ':5000' + '到浏览器打开')
server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
server.serve_forever()
index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>文件共享</title>
<link rel="Shortcut Icon" href="/static/img/logo.ico" type="image/x-icon" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
<script src="/static/js/jquery.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/fileinput.min.js"></script>
<link rel="stylesheet" href="/static/css/fileinput.min.css">
<script src="/static/js/zh.js"></script>
</head>
<body>
<div class="container">
<h2>在同一局域网下输入{{ip}}:5000即可访问</h2>
<br>
<div class="list-group">
{% for file in files %}
<a href="{{ url_for('download',filename=file)}}" class="list-group-item list-group-item-secondary">{{ file }}</a>
{% endfor %}
</div>
<br>
<div class="upload-wrap">
<input id="upload" type="file" multiple="multiple" name="files" />
</div>
<script>
$("#upload").fileinput({
language: 'zh', // 设置语言
uploadUrl: "{{url_for('upload')}}", // 上传地址
uploadAsync: true, // 默认异步上传
showUpload: true, // 显示上传按钮
showRemove: true, // 显示移除按钮
showPreview: true, // 显示预览
showCaption: true, // 显示标题
browseClass: "btn btn-primary", // 按钮样式
dropZoneEnabled: true, // 显示拖拽区域
maxFileCount: 30, // 允许同时上传的最大文件个数
enctype: 'multipart/form-data',
validateInitialCount: true,
previewFileIcon: "",
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
}).on("fileuploaded", function (event, data, previewId, index) {
window.alert('文件上传成功');
});
</script>
</div>
</body>
</html>
待添加功能
- 支持手机扫二维码访问
- 支持删除功能
- 支持浏览下载子目录下的文件
原文地址:https://www.cnblogs.com/foresthe/p/15106445.html
- Centos7 firewalld防火墙基本操作
- Spark Sql系统入门4:spark应用程序中使用spark sql
- Flume+Kafka收集Docker容器内分布式日志应用实践
- CentOS7搭建ELK日志集中分析平台
- Centos安装sshfs实现挂载目录
- shell脚本监控磁盘使用率
- Python使用MD5加密字符串
- Spark MLlib之 KMeans聚类算法详解
- Python时间与时间戳转换
- linux配置ssh互信实现免密登陆
- uva--1339 - Ancient Cipher(模拟水体系列)
- Python获得13位unix时间戳
- Centos7下LVM对文件系统进行在线扩容
- centos7编译安装Redis
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法