当前位置: 首页 > 面试题库 >

如何使用Java从Google Cloud Storage下载文件?

郏博瀚
2023-03-14
问题内容

我正在开发一个应用程序,为用户提供一个界面,用户可以在其中从我们的Google Cloud
Storage下载文件。我编写了单元测试,可以连接到存储并下载了一个文件。

现在,我(几乎)完成了界面,我想测试整个应用程序。但是现在我注意到我并没有真正下载文件,而是下载了包含有关要下载文件的META数据的文件。就像是:

{
 "kind": "storage#object",
 "id": "xxxxxxxxxxx/Homer.png/xxxxxxxxxxxx",
 "selfLink": "https://www.googleapis.com/storage/xxxxxxxxxxxxxxxx/Homer.png",
 "name": "Homer.png",
 "bucket": "xxxxxxxxxxxxxxx",
 "generation": "xxxxxxxxxxxxxxx",
 "metageneration": "1",
 "contentType": "image/png",
 "updated": "2014-07-17T08:37:28.026Z",
 "storageClass": "STANDARD",
 "size": "xxxxx",
 "md5Hash": "xxxxxxxxxxxxxxxxxxxxx",
 "mediaLink": "https://www.googleapis.com/download/storage/xxxxxxxxxxxxxxx/o/Homer.png?generation=xxxxxxxxxxxxxxxxx&alt=media",
 "owner": {
  "entity": "user-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "entityId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 },
 "crc32c": "xxxxxxxxxx",
 "etag": "xxxxxxxxxxxxx"
}

我想知道我在做什么错,这是我用来下载文件的代码:

public byte[] getFileAsByteArray(String bucketName, String fileName)
        throws GoogleAppManagerException {
        Storage storage = null;
        try {
            storage = getStorage();
        } catch (GeneralSecurityException e) {
            throw new GoogleAppManagerException(SECURITY_EXCEPTION + e.getStackTrace(), e);
        } catch (IOException e) {
            throw new GoogleAppManagerException(IO_EXCEPTION + e.getStackTrace(), e);
        }
        Get get = null;
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            get = storage.objects().get(bucketName, fileName);
            get.executeAndDownloadTo(outputStream);
        } catch (IOException e1) {
            throw new GoogleAppManagerException(IO_EXCEPTION + e1.getStackTrace(), e1);
        }
        return outputStream.toByteArray();
    }

问题答案:

如您所说,当前正在下载元数据。您需要使用媒体下载来下载对象的数据。

在此处查看示例Java代码:https
:
//developers.google.com/storage/docs/json_api/v1/objects/get

这是使用的最简单方法getMediaHttpDownloader()

有关媒体和其他方法(可恢复下载)的更多信息,请访问:https: //code.google.com/p/google-api-java-
client/wiki/MediaDownload



 类似资料:
  • 实际上我需要下载XLS文件从测试资源使用资源ID在java 谁能帮帮我吗 我尝试了下面的代码,但我遗漏了一些东西 上面的代码在 请帮忙 提前谢谢

  • 问题内容: http://www.example.com/information.asp我需要获取一个在线文件(例如),并将其保存到目录中。我知道有几种方法可以逐行捕获和读取在线文件(URL),但是有没有一种方法可以使用Java下载和保存文件? 问题答案: 可以使用 Java NIO : 使用是可能不是一个简单的循环从源信道的读取和写入这个频道有效得多。许多操作系统可以直接将字节从源通道传输到文件

  • 问题内容: 我已经尝试了Google驱动器的某些功能,但是无法从驱动器下载文件。 这是我使用的代码 当我运行脚本时,它显示为NULL。 我在这里想念什么? 现在在添加以下行之后执行,然后调用下载功能 现在的问题是如何借助我从脚本中获得的“响应”来下载文件。 问题答案: Google Docs本机格式的文档没有字段,而是可以使用集合导出它们: https://developers.google.co

  • 有一个联机文件(如)我需要抓取并保存到目录中。我知道有几种方法来抓取和读取在线文件(URL),逐行,但有没有一种方法只是下载和保存文件使用Java?

  • 问题内容: 在我的应用程序中,在客户端创建了一个json对象。该对象被发布到HttpServlet,后者基于POST数据创建pdf文件。 该文件将发送回用户。调用成功函数,并记录流数据。但是,我想要下载该文件。 如何实现呢? 我的客户端代码: }); 然后servlet创建文件: 日志中的输出: 我的解决方案:* 有关指针,请参见http://www.particletree.com/notebo

  • 我正在使用Qt框架编写一个C应用程序,该应用程序需要从源锻造下载文件。 我必须下载这个文件https://sourceforge.net/projects/meshlab/files/updates/1.3.3/updates.xml 我使用Qt和QHttp类编写了以下代码: QHttp::设置主机和 QHttp::获取都不会阻止函数立即返回一个整数 ID。当 http 文件传输完成后,将自动调用