【原創】基于 Flask 的簡單文件收集器

在單位內網環境中,我經常需要收集 pdf 格式的記錄表。于是我基于 ai ide,開發了一個基于 Flask 開發的輕量級文件上傳服務項目,部署在單位飛騰芯的銀河麒麟系統上(當然由于 python 的跨平臺,在 windows 和 mac 上也可部署),可以快速搭建一個文件收集平臺。

項目簡介

EasyUpload 是一個極簡的文件上傳與瀏覽服務,基于 Flask 開發。專門用于瑣碎文件收集的輕量級文件上傳服務。它具有以下特點:

  1. 簡單易用:支持拖拽上傳和點擊選擇文件
  2. 安全控制:支持密碼保護和IP限制
  3. 文件管理:提供文件瀏覽和下載功能
  4. 預覽功能:支持圖片、文本、PDF和Office文檔預覽
  5. 二維碼分享:可生成文件下載二維碼

項目截圖

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

核心功能實現

1. 文件上傳處理

項目的核心是文件上傳功能,通過/uploadFiles路由處理:

@app.route('/uploadFiles', methods=['POST'])
def upload_files():# 處理多個文件上傳# 檢查文件類型和大小限制# 根據設備名重命名文件避免沖突

上傳的文件會按日期分類存儲,并根據設備名進行命名,防止文件名沖突。

2. 文件瀏覽功能

通過/browse路由可以查看當天上傳的所有文件:

@app.route('/browse', methods=['GET'])
def browse_files():# 檢查權限和IP限制# 讀取當天上傳的文件列表# 提供文件類型、大小、上傳時間等信息

瀏覽頁面提供了豐富的功能:

  • 顯示文件詳細信息(類型、大小、上傳時間)
  • 支持文件預覽(文本、圖片、PDF、Office文檔)
  • 提供下載鏈接和二維碼分享
3. 安全機制

項目實現了多層次的安全控制:

  1. 密碼保護:可以設置上傳密碼和超級管理員密碼
  2. IP限制:支持類似.gitignore的IP黑白名單規則
  3. 權限控制:區分普通用戶和超級用戶權限
def is_ip_blocked(ip: str, rules: List[str]) -> bool:"""類似 .gitignore 的匹配規則:- 支持通配符 * 和 ?- 支持 ! 開頭的白名單規則(優先級高于黑名單)- 白名單一旦匹配,立即放行"""

部署方式

項目支持多種部署方式:

  1. 開發環境:直接使用Flask內置服務器
  2. 生產環境:推薦使用Gunicorn(Linux)或Waitress(Windows)
# 安裝依賴
pip install Flask PyYAML qrcode[pil]# 開發環境運行
python app.py# 生產環境(Linux)
gunicorn -w 4 -b 0.0.0.0:8000 app:app# 生產環境(Windows)
waitress-serve --listen=0.0.0.0:8000 app:app

配置說明

通過user_settings.yml文件可以輕松配置各項功能:

# 是否啟用文件瀏覽功能
browse_enabled: true# 上傳頁面密碼(留空則不啟用)
upload_password: ""# 是否啟用超級管理員功能
super_enabled: true# 超級管理員密碼
super_password: "admin123"# 文件大小限制(字節)
max_file_size: 104857600# 禁止上傳的文件類型
blacklist_extensions:- "exe"- "bat"- "sh"

總結

這個輕量級文件上傳服務項目展示了如何使用 Flask 快速構建一個實用的文件管理工具。它不僅功能完善,而且具有良好的安全性和可擴展性。通過簡單的配置,就可以滿足各種文件收集和分享需求。

項目代碼結構清晰,注釋詳細,非常適合Flask初學者學習參考。如果你有文件收集的需求,不妨試試這個工具,或者基于它進行二次開發,定制更符合自己需求的功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習Java的Day28

今天在昨天完成的留言板項目基礎上,我進一步開發了一個酒店房型管理系統。該系統采用MVC架構,主要功能是對酒店房型信息進行增刪改查操作。數據庫設計方面,我創建了hotel_room_type表,包含以下字段:id:主鍵…

Leetcode——556. 下一個更大元素 III

題目鏈接:556. 下一個更大元素 III (由于圖片上傳失敗,不貼原題目了,有需要可以前往力扣查看) 本文給出該題的單調棧做法,同時繞過所有庫函數,所有邏輯均自行實現。 本題的思路就是從右向左按…

Idea打包可執行jar,MANIFEST.MF文件沒有Main-Class屬性:找不到或無法加載主類

背景:IDEA傳統方法【Project structure】-->artifact---->build的模式,打包【Maven】項目,發現生成的可執行jar包,顯示【找不到或無法加載主類】。但是用【Maven】的Assembly可以正常生成。期望用傳統方法實現打jar包方法&a…

檢索增強生成:RAG(Retrieval Augmented Generation)

什么是 RAG?為什么使用 RAG?LLM 微調 和 RAG?實戰什么是 RAG? RAG 在論文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中被引入,原論文是這樣描述的: 探索了一種 通用的 檢索增…

Android 設置/修改系統NTP服務地址

Android 手機的 NTP 時間同步(網絡時間同步)主要依賴網絡,但系統時間來源還包括其他方式,整體時間校準機制是多種來源的結合。具體可分為以下幾類: 1. 網絡 NTP 同步(最主要方式) 這是 Androi…

Ubuntu22.04 安裝vitis2023.2 卡在“Generating installed device list“.

關于這個問題,xilinx有官方說明,鏈接 原因:問題是 Ubuntu 20.04 缺少 libtinfo.so.5 庫。 解決辦法: sudo apt-get install libtinfo5

前端全棧修煉手冊:從 Vue3 到工程化的進階之路

本文將全方位覆蓋前端開發的核心知識,從 Vue3 框架的基礎語法到復雜的工程化實踐,從包管理工具的使用到模塊規范的深入理解,帶你踏上從入門到精通的進階之路。 Vue3 框架:新時代前端開發的基石 Vue3 核心語法探秘 Vue3 作為目前…

Jetpack Compose 常用控件

Jetpack Compose 常用控件一、基礎展示控件:呈現靜態內容二、交互控件:響應用戶操作三、列表與網格控件:展示大量數據四、導航與標簽控件:組織頁面結構五、反饋控件:提示與加載狀態六、布局控件:組織 UI 結…

Android適配最新SplashScreen方案:讓啟動頁不再“翻車“

Android適配最新SplashScreen方案:讓啟動頁不再"翻車" 各位開發者大佬們,最近是不是又被Android的SplashScreen適配搞得焦頭爛額?別慌,今天咱們就來聊聊這個讓人又愛又恨的啟動頁適配方案,保證讓你笑出腹肌的同時,還能把技術要點牢牢掌握![6][7][9][10] 一、…

【自動駕駛】《Sparse4Dv3》代碼學習筆記

這里時間比較有限,優先看Sparse4Dv3方法里面相對以前改動的地方。 0.參考 代碼v1/v2/v3:https://github.com/HorizonRobotics/Sparse4D 跑起來:https://github.com/HorizonRobotics/Sparse4D/blob/v3.0/docs/quick_start.md 1.方法 (1&a…

「ECG信號處理——(22)Pan-Tompkins Findpeak 閾值檢測 差分閾值算法——三種R波檢測算法對比分析」2025年8月8日

目錄 1、引言 2、算法原理 (1)Pan-Tompkins 算法(方法1) (2)Findpeak 閾值檢測算法(方法2) (3)差分閾值算法(方法3) 3、算法性能…

Qdrant Filtering:must / should / must_not 全解析(含 Python 實操)

在向量搜索中,過濾(Filtering) 是保證結果精準性和業務契合度的關鍵手段。Qdrant 的過濾機制不僅能在向量相似度檢索的基礎上疊加結構化條件,還提供了靈活的布爾邏輯組合,讓我們可以像寫數據庫查詢一樣,精準…

五、RuoYi-Cloud-Plus 前端項目部署以及如何改后端請求地址。

1.前情描述 前面的文章我們介紹了RuoYi-Cloud-Plus的nocos的配置內容,已經啟動其他服務要注意什么東西。 專欄內容在這,感興趣可以看看。 https://blog.csdn.net/weixin_42868605/category_13023920.html 2.前端項目部署。 官網地址:plus…

工作量評估

工作量評估 API 工作量評估: 得分 入參個數 * 0.2 業務規則 * 0.5 改動的庫表個數 * 0.3 得分(1-2):簡單API-5人天 得分(3-8):中等API-8人天 得分(8-15):復…

籃球運動(動態規劃)

題目描述小明建造了一個籃球場,他請來了2行n列的人,想讓他們進行比賽。每一個人都有一個能力值,第一行分別為h11,h12,…,h1n,第二行為h21,h22,…,h2n。現在小…

區塊鏈與大數據分析技術深度解析

目錄 區塊鏈與大數據分析技術深度解析 1. 引言:當區塊鏈遇見大數據 2. 區塊鏈數據特性 2.1 數據結構差異 2.2 區塊鏈數據層級 3. 數據獲取技術 3.1 節點直連方案 3.2 鏈上數據湖架構 4. 數據分析關鍵技術 4.1 交易圖譜分析 4.2 地址聚類算法 5. 鏈上分析應用場景 5.1 反洗錢(A…

網絡基礎——網絡層級

OSI七層模型OSI七層模型名稱功能協議應用層直接為用戶應用程序(如瀏覽器、郵件客戶端)提供網絡服務接口。HTTP/HTTPS(網頁瀏覽)FTP(文件傳輸)SMTP/POP3(郵件)DNS(域名解析…

【Redis】hash哈希,List列表

目錄 一. hash哈希 1.1.常用命令 1.1.1.HSET 1.1.2.HGET 1.1.3.HEXISTS 1.1.4.HDEL 1.1.5.HKEYS 1.1.6.HVALS 1.1.7.HGETALL 1.1.8.HMGET 1.1.9.HLEN 1.1.10.HSETNX 1.1.11.HINCRBY 1.1.12.HINCRBYFLOAT 1.2. 內部編碼 1.3. 使用場景 1.4…

MySQL相關概念和易錯知識點(4)(分組查詢、連接查詢、合并查詢、子查詢)

目錄1.分組查詢(1)聚合函數(2)group by子句(3)having2.連接查詢(1)內連接(笛卡爾積)(2)外連接(3)內外連接的區…

【Python 高頻 API 速學 ①】

一、為什么先學它們? 在真實代碼里,90 % 的 bug 都源于「拿到的是 A 類型,卻當成 B 類型用」。 把「不確定」變成「確定」——這就是類型轉換三兄弟的核心價值。二、三兄弟速覽函數一句話定位常見輸入失敗會怎樣int(x)把 x 變成整數‘42’, 3…