零、概述
我利用flask搭建了一个简易的共享服务器,分享给大家
一、python代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import os
import time
from flask import Flask,render_template,url_for,redirect,send_from_directory
# 共享文件夹的根目录
rootdir = r 'C:\Users\Administrator\Downloads\zlkt'
app = Flask(__name__)
@app .route( '/doc/' )
@app .route( '/doc/<subdir>/' )
def document(subdir = ''):
if subdir = = '':
# 名字为空,切换到根目录
os.chdir(rootdir)
else :
fullname = rootdir + os.sep + subdir
# 如果是文件,则下载
if os.path.isfile(fullname):
return redirect(url_for( 'downloader' , fullname = fullname))
# 如果是目录,切换到该目录下面
else :
os.chdir(fullname)
current_dir = os.getcwd()
current_list = os.listdir(current_dir)
contents = []
for i in sorted (current_list):
fullpath = current_dir + os.sep + i
# 如果是目录,在后面添加一个sep
if os.path.isdir(fullpath):
extra = os.sep
else :
extra = ''
content = {}
content[ 'filename' ] = i + extra
content[ 'mtime' ] = time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime(os.stat(fullpath).st_mtime))
content[ 'size' ] = str ( round (os.path.getsize(fullpath) / 1024 )) + 'k'
contents.append(content)
return render_template( 'test.html' , contents = contents, subdir = subdir, ossep = os.sep)
@app .route( '/download/<fullname>' )
def downloader(fullname):
filename = fullname.split(os.sep)[ - 1 ]
dirpath = fullname[: - len (filename)]
return send_from_directory(dirpath, filename, as_attachment = True )
if __name__ = = '__main__' :
app.run()
|
二、html代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< title >文档管理</ title >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel = "external nofollow"
integrity = "sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin = "anonymous" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" rel = "external nofollow"
integrity = "sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp"
crossorigin = "anonymous" >
< script src = "https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"
integrity = "sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin = "anonymous" ></ script >
< style type = "text/css" >
.big-border {
background: #fff;
width: 1400px;
margin: 0 auto;
padding: 10px;
}
body {
background: #f3f3f3;
}
.page-title {
text-align: center;
}
</ style >
</ head >
< body >
< div class = "big-border" >
< h3 class = "page-title" >文档管理</ h3 >
< hr >
< h4 >当前目录 {{ossep+subdir}}</ h4 >
< hr >
< table width = "600px" >
< thead >
< tr >
< th >文件或目录名</ th >
< th >修改时间</ th >
< th >大小</ th >
</ tr >
</ thead >
< tbody >
{% if subdir %}
< tr >
< td >< a href = "../" rel = "external nofollow" >..{{ossep}}</ a ></ td >
< td ></ td >
< td ></ td >
</ tr >
{% endif %}
{% for i in contents %}
< tr >
< td >< a href = "{{ url_for('document', subdir=subdir+i.filename) }}" rel = "external nofollow" >{{ i.filename }}</ a ></ td >
< td >{{ i.mtime }}</ td >
< td >{{ i.size }}</ td >
</ tr >
{% endfor %}
</ tbody >
</ table >
< hr >
</ div >
</ body >
</ html >
|
三、使用
1. 更改python代码中的rootdir,这里需要填你所共享的文件夹
2. render_template('test.html', ...),我将html命名为test.html,所以这里就是render_template('test.html', ...),你如果命名了其它名字,这里记得改一下
四、最后效果
运行脚本之后,用浏览器打开 http://127.0.0.1:5000/doc/,显示效果如下图
最后欢迎大家使用,和我交流。
以上就是Python 利用flask搭建一个共享服务器的步骤的详细内容,更多关于flask搭建服务器的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/ddzj01/p/10343325.html