经销商任务文件下载

## 经销商任务文件下载 文件服务器(通过http://www.speedyrender.cn/api/v1/kuaixuan/serverinfo/动态获取)用于上传文件和下载文件 测试环境文件服务器端口:8889 正式环境文件服务器端口:8888 ### 任务源文件下载接口 文件略大,下载途中可能出现网络抖动,我方支持断点续传,连接后可继续下载 **请求URL:** - ` http://xx.com/api/v1/kuaixuan/agency/task/download` **请求方式:** - POST **请求示例:** 通过访问获取文件服务器接口得到可用的服务器列表 http://www.speedyrender.cn/api/v1/kuaixuan/serverinfo/ 选择其中一个ip拼接访问路径 经销商请求下载源文件zip包的流程描述如下: 我方将持续更新任务状态到经销商 经销商通过查询任务心里中renderzipfile(源文件) 将查询到的文件路径与请求url拼接在一起 ``` url:http://fileserveripaddr:8889/api/v1/kuaixuan/agency/task/download/2019-10-17/4bbdcc7c-c96f-44e9-b501-98ac81f768a5.zip - 备注:文件路径需要url encode编码,'/'不做处理,'空格'转为'%20' jsondata= { "agencyid":"M4JUWRUQ", "data":"{"id":3}", "sign":"1e1b30b62041dbcadb49e2482c3bd801861c175b328a4506f04b5a4760b5f45db29f09822cae8942a700f470e15bec8e18e53cb61dd2717116504c8bd16971691f5477cb7eadf413264db332cd577b4b6998306da3b29c2b79a4dd1087bad731fe79fb9378101be351a0ebf49293a4d07ad506cd34904a109f521664b9aec268e45efb0e7c55c7cd1225027c461f8e38866cd4b6b1dc692593b15b8a49514825f9eb70cc6d0d1125fef860552a293e6bfaff1003269ca93982e098efa2350175985dea7d3d4b3d03146fe25c395d7aeafe34190e03e2a80329b435f9769469bcc22fd8111cadb29e4b3f84a5c0d01d1bc59c7fe7283179a97264d2d30470f73d" } ``` **参数:** |参数名|类型|说明| |:----- |:-----|----- | |agencyid | string |经销商id| |data | string |里面定义用户id| |sign |string |由经销商的私钥和data生成的签名| |/2019-10-17/4bbdcc7c-c96f-44e9-b501-98ac81f768a5.zip|string|需下载的任务源文件,可根据任务id查询renderzipfile字段获取(我们同步任务信息时包含)| data中的信息如下: |参数名|类型|说明| |:----- |:-----|----- | |id | ingt64 |经销商自己库中的用户id| **返回值** 文件字节流,经销商可在访问之前在本地创建一个文件,使用文件句柄接收返回的字节流,并保存成文件 C# e.g: ``` HttpWebRequest req = WebRequest.CreateHttp($"http://{apiaddr}:{port}/api/v1/agency/kuaixuan/task/download{filename}"); req.ContentType = "application/json"; req.Method = "POST"; byte[] buf = Encoding.GetBytes(JsonConvert.SerializeObject(jsondata)); req.ContentLength = buf.Length; using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(req.GetRequestStream())) { bw.Write(buf); } var res = req.GetResponse(); if (res is HttpWebResponse) { using (var fileStream = File.OpenWrite(SavePath)) { res.GetResponseStream().CopyTo(fileStream); } } else { // 出错 } ```