泛微 Ecology9 附件相关常用代码

附件相关常用代码

泛微 / Ecology9

1. 对外提供指定附件下载地址

  • 通过泛微自带的附件下载地址加上生成的认证信息,生成附件地址有两种方案,区别在于认证的生成。

    方案1:通过DesUtils 工具类生成
    try {
        String imagefileid = "123456"; // 附件的id,不是表单上写入数据库的id
        String url = "http://127.0.0.1:8080"; // 系统外部访问地址
        String userId = "1"; // 授权用户 1表示管理员
        String startTime = "2026-05-12 12:00:00"; // 授权链接的允许下载的开始时间
        String time = "5"; // 授权链接的有效时长(分钟)
        String rawCode = userId + "_" + imagefileid + "_" + startTime + "_" + time;
    //  String rawCode = userId + "_" + imagefileid; // 不限制时间,不建议
        DesUtils des = null;
        String ddcode; // 生成加密校验码
        des = new DesUtils();
        ddcode = des.encrypt(rawCode);
        String downUrl = url+"/weaver/weaver.file.FileDownload?download=1&fileid="+imagefileid+"&ddcode="+ddcode;
        System.out.println(downUrl);
    
    }catch (Exception e){
        e.printStackTrace();
    }
    
    方案2:通过SystemDocUtil 工具类生成
    String imagefileid = "123456";
    String url = "http://127.0.0.1:8080";
    Map params = new HashMap();
    params.put("timelimit", "1"); // 0表示永久,1表示限定时长
    String time = "5";
    params.put("timeout",time); // 设为具体分钟数可限制时效,需timelimit设置成1才生效。不设置该参数,默认5分钟有效
    params.put("adminright", "1"); // 1表示启用管理员权限
    User user =  new User(1);
    String ddcode = SystemDocUtil.takeddcode(user, imagefileid+"", params);
    String downUrl = url+"/weaver/weaver.file.FileDownload?download=1&fileid="+imagefileid+"&ddcode="+ddcode;
    System.out.println(downUrl);
    

2. 读取文件流

  • int imageFileId = 123456;
    ImageFileManager imageFileManager = new ImageFileManager();
    imageFileManager.getImageFileInfoById(imageFileId);
    InputStream inputStream = imageFileManager.getInputStream();
    return inputStream;

3. 通过docId(表单上文档字段入数据库的值)查询imageFileId

  • int docId = 123;
    String sql = "SELECT a.imageFileId,a.imageFileName,a.imageFileType,a.fileRealPath,a.fileSize from ImageFile a inner join DocImageFile b on a.imageFileId = b.imageFileId where b.docId = ?";
    RecordSet rs = new RecordSet();
    rs.executeQuery(sql,docId);
    List<Integer> imageFileIds = new ArrayList<>();
    while(rs.next()){
        imageFileIds.add(rs.getInt("imageFileId"));
    }