经销商任务文件下载
## 经销商任务文件下载
文件服务器(通过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 {
// 出错
}
```