1、服务器接口
importflask,os,sys,time
fromflaskimportrequest,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’])
defdownload():
fpath=request.values.get(‘path’,”)#获取文件路径
fname=request.values.get(‘filename’,”)#获取文件名
iffname.strip()andfpath.strip():
print(fname,fpath)
ifos.path.isfile(os.path.join(fpath,fname))andos.path.isdir(fpath):
returnsend_from_directory(fpath,fname,as_attachment=True)#返回要下载的文件内容给客户端
else:
return'{“msg”:”参数不正确”}’
else:
return'{“msg”:”请输入参数”}’
#get方法:查询当前路径下的所有文件
@server.route(‘/getfiles’,methods=[‘get’])
defgetfiles():
fpath=request.values.get(‘fpath’,”)#获取用户输入的目录
print(fpath)
ifos.path.isdir(fpath):
filelist=os.listdir(fpath)
files=[fileforfileinfilelistifos.path.isfile(os.path.join(fpath,file))]
return'{“files”:”%s”}’%files
#post方法:上传文件的
@server.route(‘/upload’,methods=[‘post’])
defupload():
fname=request.files.get(‘file’)#获取上传的文件
iffname:
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)
2、客户端请求
importrequests
importos
#上传文件到服务器
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/’)
withopen(os.path.join(basepath,’hello_download.txt’),’w’,encoding=’utf-8′)asf:#保存文件
f.write(file)