0

我有一个情况。我正在使用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;
}

谢谢, 达莫达尔

4

4 回答 4

1

您可以使用 CMIS 协议,它是一个标准并且集成在 Alfresco 中,或者您可以开发一个 web 脚本,在参数(nodRef、fileName、type...)之后提供一个文件。

于 2013-11-29T13:59:52.813 回答
1

有一个 Java api,在您的项目中添加一些 JAR,并且有一种方法可以连接到 Alfresco 和文件

于 2014-01-03T16:52:32.180 回答
0

你可以开发你的 webscript 来上传你的文件

于 2014-01-03T23:33:24.557 回答
0

该代码仅用于处理 file:// URL,因此将忽略传递给它的主机名。您需要从远程服务器上复制数据才能按原样使用代码,具体操作方式取决于您连接到 Alfresco 的方式。

于 2013-11-12T23:20:27.790 回答