java - 使用 Java 从远程服务器下载文件夹

标签 java alfresco apache-commons passbook

我有一个情况。 我正在使用JPasskit生成 Apple Pass。这个 JPasskit 工作的原因如下 1) 它将图像文件夹的位置作为 URL 或字符串作为输入。 2) 如果是 URL,则忽略主机名和端口,并考虑路径的其余部分。 3) 然后将此文件夹的内容(在步骤 1 中获得的路径)复制到新的临时文件夹 4) 然后它会关闭临时文件夹,并在生成通行证后删除临时文件夹。

如果文件夹位于本地,则一切正常。但我们使用 Alfresco 作为内容管理服务器,所有图像都位于 Alfresco 上。因此,我必须将路径指定为 URL hostname:port/folder1/folder2/folder3 ,API 将其解码为 /folder1/folder2/folder3 并抛出 FileNotFoundException,因为它不能在其本地目录结构中查找路径。 因此,我需要一些关于如何使用 java 从 Alfresco 服务器(Linux 服务器)下载文件夹并像此 api 那样创建临时文件夹的建议。这将让我覆盖来自 JPasskit API 的特定方法调用,该方法将文件夹内容复制到临时文件夹中。

非常感谢任何有关方面的帮助或建议。

我在用于创建通行证的 JPasskit api 中添加了以下代码。第一个方法 createSignedAndZippedPkPassArchive 将 URL 作为属性,并从 URL 中删除 hostname:port 并将路径的其余部分作为 String 传递到其重载版本。 我正在考虑重载此方法以从 Alfresco 上的适当路径下载图像文件夹,然后进行相应操作。

public static byte[] createSignedAndZippedPkPassArchive(final PKPass pass, final URL fileUrlOfTemplateDirectory,
        final PKSigningInformation signingInformation) throws Exception {
    String pathToTemplateDirectory = URLDecoder.decode(fileUrlOfTemplateDirectory.getFile(), "UTF-8");
    return createSignedAndZippedPkPassArchive(pass, pathToTemplateDirectory, signingInformation);
}

public static byte[] createSignedAndZippedPkPassArchive(final PKPass pass, final String pathToTemplateDirectory,
        final PKSigningInformation signingInformation) throws Exception {

    File tempPassDir = Files.createTempDir();
    FileUtils.copyDirectory(new File(pathToTemplateDirectory), tempPassDir);

    ObjectMapper jsonObjectMapper = new ObjectMapper();
    jsonObjectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    jsonObjectMapper.setDateFormat(new ISO8601DateFormat());

    createPassJSONFile(pass, tempPassDir, jsonObjectMapper);

    File manifestJSONFile = createManifestJSONFile(tempPassDir, jsonObjectMapper);

    signManifestFile(tempPassDir, manifestJSONFile, signingInformation);

    byte[] zippedPass = createZippedPassAndReturnAsByteArray(tempPassDir);

    FileUtils.deleteDirectory(tempPassDir);
    return zippedPass;
}

谢谢, 达莫达

最佳答案

您可以使用 CMIS 协议(protocol),它是一个标准,并且集成在 Alfresco 中,或者您可以开发一个网页脚本,提供一个跟随参数(nodRef、文件名、类型...)的文件。

关于java - 使用 Java 从远程服务器下载文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19941173/

相关文章:

java - JSF 是基于什么构建的?

sftp - 如何将 SFTP 协议(protocol)添加到 alfresco 应用程序

android - 无法将依赖项添加到 Android 项目

java - 如何使用 apache commons 从 TAR 解压缩特定文件?

java - 好的哈希函数? (32位太小,64位太大)

java - 将默认bean构造函数设置为public在spring中不会实例化

java - 到达组件的澄清,Java Swing

java - Spring MVC Controller 测试,并模拟许多类

java - Activiti HistoricProcessInstanceQuery 返回缺少 processVariables

JavaScript selectAll\deselectAll 复选框功能在 IE8 上不起作用