【问题标题】:Can an integration with Google Drive API handle custom MIMETypes?与 Google Drive API 的集成可以处理自定义 MIMETypes 吗?
【发布时间】:2020-11-20 23:32:46
【问题描述】:

我一直在查看 Google Drive API https://developers.google.com/drive/api/v3/enable-sdk 好奇我是否可以将它用作自定义 Web 应用程序文件的云存储。当 MIMETypes 是标准类型时,它们才有意义,但我无法弄清楚非标准 MIMETypes 会发生什么,它只是未知文件类型(应用程序/八位字节流)还是其他?

我还注意到,在有关与 Drive UI 集成的部分中,您可以指定与您的应用相关联的 MIMEType(或者只是应用可以实际打开并与之交互的文件类型),Google Drive 会建议此文件类型可以是使用应用程序打开,但这不适用于自定义 MIMETypes 吗?

我无法测试它,因为我需要我的服务器设置,目前只是了解我的选项,以及是否需要将我的自定义文件换成 PDF 文件:\

附加上下文 例如,假设我有一个启用了 Google Drive API 的应用程序,并且还想使用 Drive UI。我正在阅读他们的文档以了解支持的格式类型,有时通过他们的文件上传 API 调用发送自定义 application/CUSTOM_TYPE MIMETypes,例如:

 POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media
 Content-Type=application/CUSTOM_TYPE
 ...

假设它不是 Google Drive 支持的标准格式,我读到有时自定义 MIMETypes 最终会更改为 application/octet-stream,如果您将 Drive UI 设置为让 Google 识别您的应用想要打开application/CUSTOM_TYPE 而不是application/octet-stream

我不知道如何解决这个问题。有一些选项可以将此自定义格式转换为 Google 支持的格式,但表示该应用需要非常具体的数据,因此能够打开标准格式(如 pdf)并不是很有帮助,因为它可能不是应用程序正在寻找的数据,因此自定义类型将解决该问题...如果它确实适用于 Google Drive。

【问题讨论】:

  • 你好@Maplefury!我不完全理解这里的上下文。您能否具体说明所涉及的 API 请求?另外,需要哪些 MIME 类型?
  • @Jacques-GuzelHeron 我用一些上下文更新了这个问题:)

标签: google-drive-api integration mime-types


【解决方案1】:

我了解到您想要开发一个使用自定义 MIME 类型的网络应用,但您不确定要使用哪些类型。如果我对问题的理解是正确的,那么您不需要指定自定义 MIME 类型。如Drive UI Integration 所写,您只能在«*standard media typesGoogle Workspace MIME types*» 之间进行选择。

作为一般规则,MIME 类型用作文件应如何显示和处理的建议。如果使用其中一种允许的 MIME 类型会在您的应用程序中引发错误行为,请使用 void 类型来查看它是否有帮助。否则,请使用上面链接中最接近的匹配项。请不要犹豫,问我任何其他问题。

【讨论】:

  • 我也在读那个,有点困惑。虽然也许对于更多特定于应用程序的文件类型,我应该查看文件扩展名。因为我认为这允许应用程序打开特定于应用程序的文件,而不是依赖于 mimeType。谢谢顺便说一句!
【解决方案2】:

在深入研究之后,我意识到 Google Drive UI 确实允许自定义 mimeTypes。需要注意的是,我只知道这肯定适用于基于 xmljson 的自定义 mimeType。

我将介绍该应用如何使用/传输自定义文件以及我们自己的存储空间,然后介绍我如何使其与 Google Drive 和 Drive UI 一起使用。

在应用内使用自定义文件。要在应用程序/数据库周围传输数据,文件的格式为 jsonxml,但 mimeType 的格式为 application/custom+xmlapplication/custom+json。这些文件还有一个内部使用的自定义fileType,当我们在文件中移动时,它是请求中mimeType 的一部分,而POST 将它发送到各个端点。这看起来像application/custom+xml; fileType=subCustomType。另外因为这在技术上只是基于xmljson,所以mimeType 也可能只是text/xmlapplication/json

将自定义文件上传到 Google 云端硬盘。 请注意,该应用程序使用了多种方式将文件发送到谷歌驱动器,无论是使用库还是使用访问令牌向 REST 端点发送请求,我不会关注这方面,只关注文件本身的细节。

  1. 由于文件基于xml/json,文件内容将转换为text/xmlapplication/json 类型的blob。文件阅读器用于将其作为二进制字符串读取,以用于分段上传。
  2. 在我的实验中,application/custom+xml; fileType=subCustomType 形式的 mimeType 被截断为 application/custom_xml,因此为了仍然将该信息与文件相关联,我使用了 google 文件元数据上的 properties 属性来指定自定义文件类型它也是。请注意,如果这是应用程序特定的数据并且是应用程序私有的,则此元数据可以存储在 appProperties 中。因此,JSON 格式的文件元数据最终看起来像: var metadata = {"name": file_.getName() + '.custom' , 'mimeType': 'application/customFormat+xml', "properties": {'customInternalFileType' : 'subScript'}} 请注意,这是 JSON 字符串化并与文件内容一起添加到分段上传中。
  3. 文件扩展名未在内部使用,但稍后将在将 Drive UI 集成配置为具有自定义文件扩展名时使用,以帮助 Google 识别此应用要打开哪些文件。 请求完成后,文件应位于具有特定名称、扩展名等的驱动器中,并且应存储内容。

配置 Google Drive UI 既然我们有一个我们感兴趣的自定义 mimeType 和文件扩展名,我们就可以设置 UI 集成。请注意,这不会给出有用的错误,所以我会指出我在尝试保存更改时学到的东西。但这里有一张关于“打开 URL”和自定义 mimeTypes 和文件扩展名的正确信息的屏幕截图。 (注意我没有嵌入图像的能力,所以这里是一个链接)。 Google Drive UI Integration Screenshot

注意事项:

  1. 打开 URL(如果您还想配置新 URL,也可以是新 URL)需要是有效域并且不能是 localhost,相信我,我试过了,它不起作用。
  2. 对于文件扩展名,您需要采用具有一侧而不是另一侧的“/”格式,这似乎不起作用。
  3. 对于文件扩展名,您不需要输入“.”会引发错误,只需名称即可。
  4. 屏幕截图中未显示,但您需要至少一个特定像素 x 像素值的应用程序图标,当它不起作用时通常更容易诊断,如果图片尺寸不正确,则不会被接受.

一旦完成并给了谷歌自我更新的时间,您应该能够将鼠标悬停在应用的特定文件上,并且应该建议您的应用打开它!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2020-02-11
    • 2011-10-27
    相关资源
    最近更新 更多