简要描述:
- zip压缩下载
D:\0_work_n\rg\core\rg3-pf\RG3.BO.Op\Controller\ZipController.cs
接口版本:
版本号 | 制定人 | 制定日期 | 修订日期 |
---|---|---|---|
v3 | 陈碧贵 | 2013-11-11 | xxxx-xx-xx |
请求URL:
http://{url参数}/bo/api/v3/zip/down
{mkey} 对应mapper文件
{resField} 对应 {mkey}里面 responseField键
请求方式:
- POST
物理类路径参数
{
"targetPath": "D:/0_work_n/rg/core/rg3-pf/RG3.Web.Host.PaaS/App_Temp/howso/AiCode/db2-fn/ConnIotData",
"sourcePathBat": "D:/0_work_n/rg/core/rg3-pf/RG3.Web.Host.PaaS/App_Temp/howso/AiCode/db2-fn/1.zip",
"filterExp":"",
"password":"压缩密码"
}
虚拟路径参数
{
"targetPath": "~/App_Temp/howso/AiCode/db2-fn/ConnIotData",
"sourcePath": "~/App_Temp/howso/AiCode/db2-fn/2.zip",
"filterExp":"",
"password":"压缩密码"
}
请求头:
参数名 | 是否必须 | 类型 | 说明 |
---|---|---|---|
XownerId | 是 | string | 项目唯一ID,对应bo_project {ownerId} |
XsysId | 否 | string | 所属系统 对应 bo_system 表 |
XuserFromFirstShareId | string | 否 | 一级分享用户ID, bo_user user_id |
XuserFromSecondShareId | string | 否 | 二级分享用户ID, bo_user user_id |
XverifyApi | 是 | string | 加密规则encryptByDES(`${newGuid()} |
XfilterAreaCode | 否 | string | 行政区编码, 对应 bo_sys_area area_code |
Content-Type: | 是 | string | application/json; charset=utf-8 请求类型 |
请求参数:
- 当事件发生时,调用http/https接口,传递参数信息,响应请求结果。
参数名 | 是否必须 | 类型 | 说明 |
---|---|---|---|
batO | 否 | 5/FD 文件流方式输出 | |
_nodejs | 否 | string | common-data 对应/Config/AppNodeJs/Plugins/fn- common-data.js, 通过nodejs插件,对响应结果进行二次处理 common-data 普通数据(小写驼峰)common-data-under 普通数据下划线 |
返回示例:
正确时返回:
json格式输出
{
"data": {
"fullName": "~/App_Temp/howso/AiCode/db2-fn/2.zip",
"batO": 0,
"name": "2.zip",
"content":"{url:fullName值}的base64位置",
"url":"文件下载地址"
},
"currentDay": "2023-11-11",
"cacheDateTimestamp": 0,
"code": "0",
"retCode": "0",
"success": true
}
错误时返回:
{
"code": 0,
"message": ""
"error":{
errorCode:null,
errorText:null
}
"success": false,
}
返回参数说明:
参数名 | 类型 | 说明 |
---|---|---|
success | bool | true 表示数据请求成功(跟code=0一致),调用者优先使用 |
code | int | true 表示数据请求成功(跟code=0一致),调用者优先使用 |
data | object | “fullName”: “~/App_Temp/howso/AiCode/db2-fn/2.zip”, “name”: “2.zip”,”content”:”{url:fullName值}的base64位置”,”url”:”文件下载地址” |
cacheType | string | redis/sqlite/local 数据来源缓存 的类型(便于开发调试和性能优化) |
cacheDate | date | 最后数据获取时间 |
前端下载代码
downTemplateUrl: function () {
this.$bsAjax.doDown(this.excelTemplates.current.template, null, true);
},
/**
* 通过base64路径进行下载
* @param {
* http://q.jpg
* ~/a/a.txt
* } url
*/
export function doDownBase64(url, root, location) {
let urlT = null;
if (url) {
let rootD = (root || window.$appConfig.api.upload).replace("upload", "down");
let content = {
url
};
///bo/api/v3/file/down
urlT = `${rootD}?content=${window.btoa(JSON.stringify(content))}`;
}
if (location) {
if (!urlT) {
MsgBox.error("下载文件未找到。");
} else {
window.location.href = urlT;
}
}
return urlT;
}
避免生产环境文件操作权限放太开导致漏洞
if (EnvPFUtil.IsDev()) return;
var pf = new PFGlobalParameter
{
OwnerId = RequestPFUtil.GetOwnerId(this.HttpContext),
SysId = RequestPFUtil.GetSysId(this.HttpContext)
};
if (_authProvider.GetCurrentDeveloper(pf.OwnerId, pf.SysId)) return;
string target = fd.SourcePath.ToLower().Replace("\\", "/");
//&& !target.Contains("/app_logs") && !target.Contains("/app_caches") App_Caches、App_Logs、
if (!target.Contains("/app_temp") )
{
ThrowError(ErrorCodeConst.UN_KNOWN_99999.ErrorCode, $"{fd.SourcePath},只允许App_Temp目录下面的文件或目录被压缩");
}
if (!string.IsNullOrEmpty(fd.TargetPath) && !fd.TargetPath.Contains("/app_temp"))
{
ThrowError(ErrorCodeConst.UN_KNOWN_99999.ErrorCode, $"TargetPath:{fd.TargetPath},只允许存放在App_Temp目录下面");
}
文档更新时间: 2023-11-11 10:57 作者:admin