【问题标题】:Programmatically downloading image from CQ5以编程方式从 CQ5 下载图像
【发布时间】:2014-04-10 11:09:27
【问题描述】:

我正在尝试以编程方式从 CQ5 下载图像。我创建了一个链接,单击该链接应下载图像。为此,我对 servlet 进行了 ajax 调用,因为每当用户单击图像时,我们应该弹出一个打开和保存对话框。 这是我在 servlet 中编写的用于下载图像的代码。

**response.setContentType("image/png");
response.setHeader("Content-Disposition", "attachment; filename=icon" + ".png");
URL url = new URL("http://somehost:portnmuber/content/dam/image.jpg");
URLConnection connection = url.openConnection();
InputStream stream = connection.getInputStream();**

我不断收到 401 错误。 有没有其他方法可以做到这一点。

谢谢,提前。

【问题讨论】:

    标签: aem


    【解决方案1】:

    首先,看看基础库中的下载组件: /libs/foundation/components/download/download.jsp

    其次,如果您没有使用 CQ5 打开会话,默认情况下它会给您一个 401 错误。我假设您是在为 CQ5 生成的容器中,还是只是从另一个域随机访问?

    注意,即使是匿名访问,CQ 仍然会建立一个匿名会话,并给你一个登录令牌。匿名仍然有效,只是不需要用户名和密码。

    【讨论】:

      【解决方案2】:

      您遇到 401 错误,因为未设置 DAM 的匿名用户权限。 首先,您应该为节点“/content/dam”的“匿名”用户授予访问权限。 您可以从页面执行此操作:"http://somehost:portnuber/useradmin"。双击用户“匿名”并转到“权限”选项卡(在窗口右侧)。检查“dam”节点的读取权限。

      其次,进入系统控制台,组件选项卡(http://somehost:portnmuber/system/console/components),找到 org.apache.sling.engine.impl.auth.SlingAuthenticator 组件。单击“配置”按钮。在组件配置中选中“允许匿名访问”并按“保存”。

      应该可以。

      【讨论】:

        【解决方案3】:

        CQ5 使用会话,因此从路径下载需要作者实例上的用户名/密码,例如curl -u username:password http://someserver.com:4502/etc/packages/my_packages/package.zip -o localpath/package.zip 将根据有权读取它的人下载一个包。对于图像,您需要像 http://someserver.com:4502/content/dam/640x960.jpg 这样的图像路径来获取图像,但您需要添加 /jcr:content/renditions/original 来获取原始图像,例如http://someserver.com:4502/content/dam/640x960.jpg/jcr:content/renditions/original。您还可以更改图像路径以获取图像的特定再现,例如 http://someserver.com:4502/content/dam/640x960.jpg/jcr:content/renditions/cq5dam.thumbnail.140.100.png 获取 140x100 版本的图像。

        【讨论】:

          【解决方案4】:

          我在尝试将图像从 AEM 下载到 iOS 设备时遇到了类似的问题。事实证明,AEM(至少我正在点击的实例)需要一个引用标头;如果不存在,请求将被拒绝。这个问题并没有出现在模拟器上,只是出现在真实设备上。这成功了:

          [request setValue: @"https://www.example.com/" forHTTPHeaderField: @"Referer"];
          

          【讨论】:

            猜你喜欢
            • 2021-08-17
            • 1970-01-01
            • 1970-01-01
            • 2017-07-05
            • 2021-08-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-24
            相关资源
            最近更新 更多