jessicaxu

一、服务端接口

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)

 

分类:

技术点:

相关文章: