Python 利用flask搭建一個(gè)共享服務(wù)器的步驟
零、概述
我利用flask搭建了一個(gè)簡(jiǎn)易的共享服務(wù)器,分享給大家
一、python代碼
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 # 如果是目錄,在后面添加一個(gè)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代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文檔管理</title> <link rel="stylesheet" rel="external nofollow" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link rel="stylesheet" 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>當(dāng)前目錄 {{ossep+subdir}}</h4> <hr> <table width="600px"> <thead> <tr> <th>文件或目錄名</th> <th>修改時(shí)間</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', ...),你如果命名了其它名字,這里記得改一下
四、最后效果
運(yùn)行腳本之后,用瀏覽器打開 http://127.0.0.1:5000/doc/,顯示效果如下圖
最后歡迎大家使用,和我交流。
以上就是Python 利用flask搭建一個(gè)共享服務(wù)器的步驟的詳細(xì)內(nèi)容,更多關(guān)于flask搭建服務(wù)器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化
這篇文章主要介紹了python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04pycharm運(yùn)行程序時(shí)看不到任何結(jié)果顯示的解決
今天小編就為大家分享一篇pycharm運(yùn)行程序時(shí)看不到任何結(jié)果顯示的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Flask與數(shù)據(jù)庫(kù)的交互插件Flask-Sqlalchemy的使用
在構(gòu)建Web應(yīng)用時(shí),與數(shù)據(jù)庫(kù)的交互是必不可少的部分,本文主要介紹了Flask與數(shù)據(jù)庫(kù)的交互插件Flask-Sqlalchemy的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Python中實(shí)現(xiàn)最小二乘法思路及實(shí)現(xiàn)代碼
這篇文章主要介紹了Python中實(shí)現(xiàn)最小二乘法思路及實(shí)現(xiàn)代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01淺談python 中的 type(), dtype(), astype()的區(qū)別
這篇文章主要介紹了淺談python 中的 type(), dtype(), astype()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04