【问题标题】:Download files as .zip via cmis通过 cmis 将文件下载为 .zip
【发布时间】:2015-06-17 13:41:32
【问题描述】:

我目前正在开发一个原生 android 应用程序并尝试访问文档服务器上的一些图片。我使用OpenCMIS 库进行交流。

我的目标是下载图片并将它们保存到设备的内部存储器或 SD 卡中。我的问题是,是否有可能将文件下载为压缩档案(例如 .zip)并在设备上解压缩?所以我不想单独下载很多文件,我想下载一个大文件。

这是OpenCMIS 能够做到的吗?或者这取决于文档服务器?我正在使用 SAP Mobile Documents,并且知道我可以通过浏览器从 Web 界面以 .zip 格式下载整个文件夹,但我还没有发现可以在自定义 android 客户端中实现这一点。

感谢任何提示或解释,在此先感谢!

【问题讨论】:

  • 以 Zip 格式下载不是 CMIS 服务。我认为您唯一的选择是打开一个新的 zip 文件进行编写,然后将每个 CMIS 文档的内容流式传输到其中
  • SAP Mobile Documents 提供文件夹的隐藏再现(流 ID:“sap:zipRendition”)。您可以使用 getContentStream() 来访问它。
  • 感谢@Florian,听起来不错!是否有任何可用的在线示例,因为我似乎找不到任何示例。或者您能否提供更详细的解释?
  • 这样的东西应该可以工作:ContentStream zipStream = session.getContentStream(folder, "sap:zipRendition", null, null);
  • 搞定了,非常感谢!另一个问题是,我是否可以仅将现有文件夹作为 zip 获取,或者我也可以将查询结果(例如,自某个时间戳以来更新的所有文件)作为 zip 获取?

标签: zip cmis opencmis smd


【解决方案1】:

所以我开始使用 help from Florian Müller

对于任何感兴趣的人,从原生 Android 应用程序中的 SAP 移动文档服务器下载文件夹为 .zip 存档的最终代码如下所示:

public void downloadAsZip(Session session, Folder folder, File destination){
    ContentStream zipStream = session.getContentStream(folder, "sap:zipRendition", null, null);
    InputStream inputStream = zipStream.getStream();

    try {
        File file = new File(destination, folder.getName()+".zip");
        FileOutputStream fileOutputStream = new FileOutputStream(file);

        byte[] buffer = new byte[1024];
        int bufferLength = 0;

        while ((bufferLength = inputStream.read(buffer)) > 0) {
            fileOutputStream.write(buffer, 0, bufferLength);
        }

        fileOutputStream.close();
        inputStream.close();
    }
    catch(IOException e){
        Log.e(TAG, "An error occurred: "+e.getMessage());
    }
}

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2020-12-04
    相关资源
    最近更新 更多