北京怎么治疗白癜风好 https://wapjbk.39.net/yiyuanfengcai/tsyl_bjzkbdfyy/大家好,这里是测试开发实战-手把手系列之六根据需求陆陆续续开发了不少组件不少应用都需要有上传文件或下载文件的功能,本节我们就介绍下该如何去实现。上传文件我们先来看看前端上传文件后,django接收文件的代码:
classUploadDjangoConfig(View):#类继承Viewdefpost(self,quest):#post请求dto=quest.POSTworkspace=dto.get(workspace,)hostname=dto.get(hostname,)ifworkspace==orhostname==:#文件要存放的位置,缺一个参数就直接返回错误turnHttpResponse(json.dumps({"message":参数不正确,"code":}),content_type="application/json")ifquest.FILES:#判断是否文件myFile=quest.FILES.get("file",None)#获取文件对象ifmyFile:#文件对象非空dir=os.path.join(workspace,hostname)#拼接存放路径ifnotos.path.exists(dir):#若文件夹不存在则新增os.makedirs(dir)destination=open(os.path.join(dir,myFile.name),wb+)#二进制格式打开一个文件用于读写forchunkinmyFile.chunks():#分块读取文件destination.write(chunk)#文件写入destination.close()#关闭文件else:turnHttpResponse(json.dumps({"message":上传文件参数错误,"code":}),content_type="application/json")turnHttpResponse(json.dumps({"code":0}),content_type="application/json")
逻辑:
1、根据请求拼接存放地址
、获取上传请求的文件对象
3、新增并打开文件,分块写入数据,关闭文件
重点:1、quest.FILES.get(“file”,None):django接收前端的文件对象、os.path.join:路径拼接,生成新路径,os.makedirs:创建文件夹3、open(filename,‘wb+’):二进制格式打开一个文件用于读写,open()方法是python的内置函数4、myFile.chunks():django的chunks方法,分块读取文件,避免文件过大造成内存缓慢以上就是一个获取前端上传文件的请求接口下载文件下面我们介绍前端点击下载文件,django服务端的实现。由于测试的同事经常要根据系统日志追踪bug,开发一个接口,实现选择行数进行下载日志文件。代码如下:classdowmloadLog(View):defpost(self,quest):dto=json.loads(quest.body)project_id=dto.get("project_id","")lines=dto.get("lines",)#获取行数,默认行projectEnvironment=ProjectEnvironmentModel.objects.all().filter(project_id=project_id)log_name=projectEnvironment.log_name#日志文件路径