吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2376|回复: 46
收起左侧

[Python 原创] python内网上传下载工具

  [复制链接]
LiCan857 发表于 2024-6-21 15:53
本帖最后由 LiCan857 于 2024-6-21 15:55 编辑

利用python的nicegui写了一个内网下载工具,支持上传和下载。
这样的工具很多,但是利用这个模块可以用很少的代码做一个比较好看的页面。
上传的文件会存在当前目录下生成一个upload文件夹中;下载则是读取upload文件夹。

首先下载模块
`pip install nicegui`

## 代码:
[Python] 纯文本查看 复制代码
from nicegui import app, ui
import os

# 如果目录不存在,则创建
directory = f'./upload/'
if not os.path.exists(directory):
    os.makedirs(directory)

app.add_static_files('/upload', 'upload')

with ui.row():
    with ui.button(on_click=lambda: ui.open('/uploadfile')):
        ui.label('上传')
        ui.icon('upload').classes('rounded-full w-16 h-16 ml-4')

    with ui.button(on_click=lambda: ui.open('/downloadfile')):
        ui.label('下载')
        ui.icon('download').classes('rounded-full w-16 h-16 ml-4')

def save_file(content, filename):
    """保存文件"""
    try:
        # 完整的文件路径
        file_path = os.path.join(directory, filename)

        with open(file_path, 'wb') as f:  # 保存图片
            f.write(content)
            ui.notify(f'{filename} 保存成功', color='positive')
    except Exception as e:
        ui.notify(e)

def list_files_and_dirs(directory):
    file_list = []
    for root, dirs, files in os.walk(directory):
        for name in files:
            file_list.append(os.path.join(root, name))
    return file_list

@ui.page('/uploadfile')
async def upload_page():
    with ui.row():
        with ui.button(on_click=lambda: ui.open('/')):
            ui.icon('arrow_back')
        ui.label('文件上传').classes('text-h5')
        with ui.button(on_click=lambda: ui.open('/downloadfile')):
            ui.icon('download')
    ui.upload(on_upload=lambda e: save_file(e.content.read(), e.name),
              on_rejected=lambda: ui.notify('Rejected!')).classes('max-w-full')

@ui.page('/downloadfile')
async def upload_page():
    file = list_files_and_dirs(directory)
    with ui.row():
        with ui.button(on_click=lambda: ui.open('/')):
            ui.icon('arrow_back')
        ui.label('文件下载').classes('text-h5')
        with ui.button(on_click=lambda: ui.open('/uploadfile')):
            ui.icon('upload')

    for i in file:
        with ui.item(on_click=lambda: ui.notify('开始下载...')):
            with ui.item_section().props('avatar'):
                ui.icon('download')
            with ui.item_section():
                ui.link(f'{i.replace(directory, "")}', i)

ui.run(title='文件上传下载工具', host='0.0.0.0', port=8080)


## 效果展示[/md]

1718955988766.jpg
1718955989825.jpg
1718955987492.jpg

免费评分

参与人数 6吾爱币 +12 热心值 +6 收起 理由
WXJYXLWMH + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yzmb8456 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
grrr_zhao + 1 + 1 谢谢@Thanks!
chinawolf2000 + 1 + 1 热心回复!
dhwl9899 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

龍謹 发表于 2024-6-23 07:37
mqw921 发表于 2024-6-22 23:41
求教,这种要怎么用?Win10-64位电脑,需要搭配什么软件使用?

需要懂点Python编程知识,下载个轻量级的PY开发环境,我用的是Thonny,复制楼主帖子中的源码,然后在Thonny中运行,如果缺什么包,就用PIP安装什么包。
mqw921 发表于 2024-6-23 08:38
龍謹 发表于 2024-6-23 07:37
需要懂点Python编程知识,下载个轻量级的PY开发环境,我用的是Thonny,复制楼主帖子中的源码,然后在Thon ...

谢谢你,我用你的Thonny,运行成功了。但是是在互联网电脑上,我要是拷贝到局域网电脑上,缺少模块的话,要怎么安装?模块有没有独立安装包?
bester 发表于 2024-6-21 16:41
 楼主| LiCan857 发表于 2024-6-21 16:47
bester 发表于 2024-6-21 16:41
话说nicegui有官方文档吗

有的,https://nicegui.io/

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
bester + 1 + 1 我很赞同!

查看全部评分

FengTao12593 发表于 2024-6-21 16:49
我用flask框架也写了个异曲同工的
cracer4869 发表于 2024-6-21 16:57
支持,老哥
 楼主| LiCan857 发表于 2024-6-21 16:57
FengTao12593 发表于 2024-6-21 16:49
我用flask框架也写了个异曲同工的

不过flask的前端只能手搓,稍微麻烦一点
L__ 发表于 2024-6-21 17:26
学习到了,谢谢分享
txj66 发表于 2024-6-21 19:09
装上试试
qingyuannan 发表于 2024-6-21 19:10
谢谢,需要用到
shhgzxm 发表于 2024-6-21 19:42
学习一下,可能用得上。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表