基于python的极简版家用网盘(使用bottle)

目录

1.服务器主文件

2.index.html

3.上传界面(下载界面已经囊括在服务器主文件里了)

4.投屏界面

 5.进入高级设置

 6.css和js

 7.最后


1.服务器主文件

本人使用的是python3.11.1,其他版本尚未测试。

此处用了不少库,功能都写在后面了,自行安装即可。

from bottle import *#服务器
from os import *#后面需要使用绝对路径
import socket#获取IP
import bottle
import random#生成随机数
import qrcode#生成二维码
import pyautogui#用于投屏
import threading#多线程

建议不要省略import bottle,因为可能会导致bottle库的run()和init中的run()重名而报错。

 下面是服务器的全部代码

服务器.py

from bottle import *#服务器
from os import *#后面需要使用绝对路径
import socket#获取IP
import bottle
import random#生成随机数
import qrcode#生成二维码
import pyautogui#用于投屏
import threading#多线程

hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)

#这里是声明那几个文件夹
apath = path.abspath("./infile")
bpath = path.abspath("./网盘")
cpath = path.abspath("./背景图片")
dpath = path.abspath("./temp")

mainport = 8080   #上传下载功能的服务器端口
tpport = 8081     #投屏功能的服务器端口

#网盘密码的更改需要在infile文件夹下的index.html中更改
#投屏的帧数需要在infile文件夹下的tp.html中更改

@route("/")
def home():
    return static_file("index.html", apath)


@route("/infile/")
def infiledown(name):
    return static_file(name, root=apath)


@route("/backimg")
def do_backimg():
    imgs = listdir(cpath)
    img = imgs[random.randrange(0, len(imgs))]
    return static_file(img, root=cpath)


@route("/file/")
def do_download(name):
    return static_file(name, root=bpath, download=True)


@route("/up")
def uppage():
    return static_file("up.html", apath)


@route("/upload", method="POST")
def do_upload():
    upd = request.files.get("upload")
    upd.save(bpath, overwrite=True)
    return static_file("upend.html", root=apath)


@route("/down")
def downpage():
    files = listdir(bpath)
    result = ""
    for file in files:
        result += """                
""".format(name=file) return """ 下载
"""+ result+ """
高级 """ @route("/other") def dootherret(): return static_file("other.html", root=apath) @route("/yanzheng",method='post') def dootheryz(): reyz=request.forms.get("pwd") if int(reyz) == 123456: #此处为进入高级界面的密码(纯数字) return static_file('business.html',apath) else: return "Password error" @route("/shut",method="post") def doyxpy(): system('shutdown -s') @route("/tpbefore") def tpbefore(): return '进入投屏界面'.format(str(ip) + ":" + str(tpport) + "/tp") def f1(): @route("/tp") def dotp(): return static_file('tp.html',apath) @route("/upimg/<>") def doupimg(): im = pyautogui.screenshot() im.save(dpath + "/sss.png") return static_file('sss.png',dpath) bottle.run(host=ip, port=tpport, reloader=True) t1=threading.Thread(target=f1,args=("apath","dpath"),daemon=True) t1.start() img = qrcode.make(str(f"http://"+str(ip)+':'+str(mainport))) imgpath=dpath+"/1.png" img.save(imgpath) os.startfile(imgpath,"open") bottle.run(host=ip, port=mainport, reloader=True, debug=True)

2.index.html

在这里,我尝试使用了一些动画,可能配色不是很好,如果想的话可以改为自己喜欢的颜色



    网盘



    

请输入登录密码:

3.上传界面(下载界面已经囊括在服务器主文件里了)

up.html




    

upend.html



    



    
        
        
    
    


4.投屏界面

tp.html


 5.进入高级设置

other.html

高级版登录验证:

 business.html




    



    

关机


启动投屏

 6.css和js

downpage.css

html,
body {
    background-image: url('/backimg');
    margin: 0px;
}

#main {
    background-color: rgba(255, 255, 255, 30%);
    position: absolute;
    top: -100%;
    left: 0px;
    width: 100%;
    transition: all 1s;
    margin: 0px;
}

.hidd {
    display: none;
}

.spanshow {
    font-size:x-large;
}

.show {
    margin: 0px;
    width: 100%;
    height: 20%;
    color: black;
    transition: background-color 1s linear, color 1s linear;
    -webkit-transition: background-color 1s linear, color 1s linear;
    -moz-transition: background-color 1s linear, color 1s linear;
    -o-transition: background-color 1s linear, color 1s linear;
}

.show:hover {
    background-color: #FF3d67;
    color: blue;
}

downpage.js


function func0(){
    document.getElementById('main').style.top="0%";
}
function fun1(){
    setTimeout(()=>{func0()},500)
}

function fun3(){
    var te1=document.getElementById('te1');
    var te2=document.getElementById('te2');
    var sub=document.getElementById('sub');
    te1.value = te2.value;
    sub.click();
}

window.onload=fun1()

你可能感兴趣的:(python,服务器,前端)