内网文件传输

from flask import Flask, request, redirect, url_for, send_from_directory, render_template_string
import os

app = Flask(__name__)
app.config['upload'] = 'uploads'  # 上传文件保存的目录
os.makedirs(app.config['upload'], exist_ok=True)

@app.route('/')
def upload_form():
    return '''
    <html>
        <body>
            <h1>Upload Files</h1>
            <form method='post' enctype='multipart/form-data'>
                <input type='file' name='files' multiple>
                <input type='submit' value='Upload'>
            </form>
            <hr>
            <h1>Download Files</h1>
            <form method='get' action='/download'>
                <input type='submit' value='List Files'>
            </form>
        </body>
    </html>
    '''

@app.route('/', methods=['POST'])
def upload_file():
    if 'files' not in request.files:
        return redirect(request.url)

    files = request.files.getlist('files')

    if not files or all(file.filename == '' for file in files):
        return redirect(request.url)

    uploaded_files = []

    for file in files:
        if file.filename != '':
            file.save(os.path.join(app.config['upload'], file.filename))
            uploaded_files.append(file.filename)

    return f'Files {",".join(uploaded_files)} uploaded successfully!'

@app.route('/download', methods=['GET'])
def download_form():
    # 列出 uploads 目录中的所有文件
    files = os.listdir(app.config['upload'])

    # 创建一个表单来选择要下载的文件
    return render_template_string('''
        <html>
            <body>
                <h1>Select a File to Download</h1>
                {% for file in files %}
                    <a href='{{ url_for('download_file', filename=file) }}'>{{ file }}</a><br>
                {% endfor %}
                <a href='/'>Back to Upload</a>
            </body>
        </html>
    ''', files=files)

@app.route('/download/<filename>', methods=['GET'])
def download_file(filename):
    # 确保请求的文件存在于 uploads 目录中
    return send_from_directory(app.config['upload'], filename, as_attachment=True)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=50504)  # 在所有可用接口上运行应用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容