一、服务端接口
import flask, os,sys,timefrom flask import request, send_from_directoryinterface_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 requestsimport 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)