简要描述:

  • zip压缩下载
D:\0_work_n\rg\core\rg3-pf\RG3.BO.Op\Controller\ZipController.cs

接口版本:

版本号 制定人 制定日期 修订日期
v3 陈碧贵 2013-11-11 xxxx-xx-xx

请求URL:

请求方式:

  • 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