zoukankan      html  css  js  c++  java
  • python-上传下载文件

    一、服务端接口

    import flask, os,sys,time
    from flask import request, send_from_directory
    
    interface_path = os.path.dirname(__file__)
    sys.path.insert(0, interface_path)  #将当前文件的父目录加入临时系统变量
    
    
    server = flask.Flask(__name__)
    
    
    #get方法:指定目录下载文件
    @server.route('/download', methods=['get'])
    def download():
        fpath = request.values.get('path', '') #获取文件路径
        fname = request.values.get('filename', '')  #获取文件名
        if fname.strip() and fpath.strip():
            print(fname, fpath)
            if os.path.isfile(os.path.join(fpath,fname)) and os.path.isdir(fpath):
                return send_from_directory(fpath, fname, as_attachment=True) #返回要下载的文件内容给客户端
            else:
                return '{"msg":"参数不正确"}'
        else:
            return '{"msg":"请输入参数"}'
    
    
    # get方法:查询当前路径下的所有文件
    @server.route('/getfiles', methods=['get'])
    def getfiles():
        fpath = request.values.get('fpath', '') #获取用户输入的目录
        print(fpath)
        if os.path.isdir(fpath):
            filelist = os.listdir(fpath)
            files = [file for file in filelist if os.path.isfile(os.path.join(fpath, file))]
        return '{"files":"%s"}' % files
    
    
    # post方法:上传文件的
    @server.route('/upload', methods=['post'])
    def upload():
        fname = request.files.get('file')  #获取上传的文件
        if fname:
            t = time.strftime('%Y%m%d%H%M%S')
            new_fname = r'upload/' + t + fname.filename
            fname.save(new_fname)  #保存文件到指定路径
            return '{"code": "ok"}'
        else:
            return '{"msg": "请上传文件!"}'
    
    
    server.run(port=8000, debug=True)

    二、客户端发送请求

    import requests
    import os
    
    
    #上传文件到服务器
    file = {'file': open('hello.txt','rb')}
    r = requests.post('http://127.0.0.1:8000/upload', files=file)
    print(r.text)
    
    
    #查询fpath下的所有文件
    r1 = requests.get('http://127.0.0.1:8000/getfiles',data={'fpath': r'download/'})
    print(r1.text)
    
    
    #下载服务器download目录下的指定文件
    r2 = requests.get('http://127.0.0.1:8000/download',data={'filename':'hello_upload.txt', 'path': r'upload/'})
    file = r2.text #获取文件内容
    basepath = os.path.join(os.path.dirname(__file__), r'download/')
    with open(os.path.join(basepath, 'hello_download.txt'),'w',encoding='utf-8') as f: #保存文件
        f.write(file)
  • 相关阅读:
    阿里云服务器的带宽计费问题
    命令行方式完成本地新建项目代码上传至git远程服务器仓库
    npm——web前端的maven
    vue-cli开发todoList
    vue开发环境搭建
    列表转树形结构
    内部类的创建
    C# 解析html 的工具库
    论亲密关系走向破碎的驱动力
    截图函数
  • 原文地址:https://www.cnblogs.com/jessicaxu/p/7891372.html
Copyright © 2011-2022 走看看