代码之家  ›  专栏  ›  技术社区  ›  Jeremy

mirth:如何从文件阅读器通道获取源文件目录

  •  1
  • Jeremy  · 技术社区  · 15 年前

    我有一个文件阅读器通道接收一个XML文档。默认情况下,文件阅读器通道会在通道映射中填充“originalfilename”,它只提供文件名,而不是完整路径。有没有什么方法可以在不需要硬编码的情况下获得完整的路径?

    3 回复  |  直到 15 年前
        1
  •  1
  •   csj    15 年前

    不幸的是,没有用于检索文件完整路径的变量或方法。当然,您可能已经知道路径,因为您必须在目录字段中提供它。我尝试使用预处理器将路径存储在通道变量中,但目录字段无法引用变量。因此,您必须在需要的任何地方硬编码完整的路径。

        2
  •  3
  •   jonduncan05    13 年前

    您可以获取如下任何源阅读器属性:

    var sourceFolder = Packages.com.mirth.connect.server.controllers.ChannelController.getInstance().getDeployedChannelById(channelId).getSourceConnector().getProperties().getProperty('host');
    

    我把它放在“欢乐论坛”上,上面有你可以访问的其他属性列表 http://www.mirthcorp.com/community/forums/showthread.php?t=2210

        3
  •  1
  •   dividius    13 年前

    您可以将目录放入通道部署脚本中:

    globalChannelMap.put("pickupDirectory", "/Mirth/inbox");
    

    然后在两个源连接器中使用该映射:

    ${pickupDirectory}
    

    在另一个频道脚本中:

    function getFileLastModified(fileName) {
       var directory = globalChannelMap.get("pickupDirectory").toString();
       var fullPath = directory + "/" + fileName;
       var file = Packages.java.io.File(fullPath);
       var formatter = new Packages.java.text.SimpleDateFormat("yyyyMMddhhmmss"); 
       formatter.setTimeZone(Packages.java.util.TimeZone.getTimeZone("UTC")); 
       return formatter.format(file.lastModified()); 
    };