惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
I
InfoQ
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
美团技术团队
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
Last Week in AI
Last Week in AI
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LangChain Blog
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
博客园 - 叶小钗
博客园 - Franky

繁星点点

最新轻量级龙虾部署教程 通过netboot.xyz重装系统 giffgaff卡保号教程 Llinux系统中全新透明代理方案(可代理所有出站流量) tailscale开启子网路由常见的坑 OpenWrt固件编译 解决UFW和Docker的问题 使用PGP的非对称算法加密文件 NSSM工具把任意exe程序注册为Windows后台服务 轻量级简约端口转发rinetd 安卓IDE的安装和使用 IP信息查询网站汇总 热点共享代理教程 SSH使用密钥认证登录详细解释 Debian系统公网IP出口切换指南,适用多IP服务器 Windows系统安装Scoop包管理器 安卓Flutter开发学习笔记 使用手机搭建节点服务端 关于github提交记录泄露真实邮箱的处理办法 anytls协议部署教程 caddy给域名用上ECH加密 通过gitlab流水线自动备份仓库 通过CF-Workers代理访问网站 低配机器使用alpine系统跑docker 端口敲门教程 3x-ui面板通过api管理示例 nmap端口扫描 数据库常用命令 snap和winget包管理器 Git推送GitHub常用命令
使用py3快速启动一个文件上传和下载的接口
2024-11-01 · via 繁星点点

安装py3

sudo apt update
sudo apt install python3 python3-pip -y

配置up.py

from flask import Flask, request, render_template_string
import os
app = Flask(__name__)
# 设置上传目录为当前目录
UPLOAD_FOLDER = '.'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
app.config['MAX_CONTENT_LENGTH'] = 25 * 1024 * 1024

HTML = '''
<!doctype html>
<title>文件上传 </title>
<h1>上传文件(最大25MB)</h1>
<div id="drop-area" onclick="document.getElementById('fileElem').click();">
    <form id="form" method="post" enctype="multipart/form-data">
        <input type="file" id="fileElem" multiple accept="*/*" style="display:none;" onchange="handleFiles(this.files)">
        <label for="fileElem">选择文件</label>
        <div id="gallery"></div>
    </form>
</div>
<div id="message" style="color: green; margin-top: 10px;"></div>
<script>
    let dropArea = document.getElementById('drop-area');
    dropArea.addEventListener('dragover', event => {
        event.preventDefault();
    });
    dropArea.addEventListener('drop', event => {
        event.preventDefault();
        handleFiles(event.dataTransfer.files);
    });

    function handleFiles(files) {
        const formData = new FormData();
        for (let file of files) {
            formData.append('file', file);
            const listItem = document.createElement('div');
            listItem.textContent = file.name;
            document.getElementById('gallery').appendChild(listItem);
        }
        document.getElementById('message').textContent = '上传中...';
        fetch('/', { method: 'POST', body: formData })
            .then(response => response.text())
            .then(data => {
                document.getElementById('message').textContent = data;
            })
            .catch(() => {
                document.getElementById('message').textContent = '上传失败!';
            });
    }
</script>
<style>
    #drop-area { border: 2px dashed #ccc; padding: 20px; text-align: center; cursor: pointer; }
</style>
'''

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        for f in request.files.getlist('file'):
            f.save(os.path.join(UPLOAD_FOLDER, f.filename))
        return '文件上传成功!'
    return render_template_string(HTML)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

GitHub网页上传单个文件的大小不能超过25M,使用GitHub客户端限制最大100M,这个限制是由GitHub的服务器设定。

  • 安装 Flask
pip install Flask
  • 运行
python up.py

端口为8080,支持拖拽和选择上传

临时下载

  • cd到文件目录
python3 -m http.server 8080