Warm tip: This article is reproduced from serverfault.com, please click

其他-与Google Drive API的集成可以处理自定义MIMEType吗?

(其他 - Can an integration with Google Drive API handle custom MIMETypes?)

发布于 2020-11-20 23:32:46

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

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

我一直无法进行测试,因为我需要设置服务器,目前我只是想了解我的选择,以及是否需要解决交换我的自定义文件以说出PDF文件的问题:\

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

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

假设它不是Google云端硬盘支持的标准格式,并且我读到有时自定义MIMEType最终会更改为application/octet-stream,如果你将Drive UI设置为让google识别你的应用要打开application/CUSTOM_TYPE而不是,这是有问题的application/octet-stream

我不确定如何解决这个问题。有一些选项可以将这种自定义格式转换为Google支持的格式,但说该应用程序需要非常具体的数据,因此能够打开pdf等标准格式并不是很有用,因为它可能不是应用所需的数据,因此自定义类型可以解决该问题...如果它确实适用于Google云端硬盘。

Questioner
Maplefury
Viewed
0
Maplefury 2021-02-10 01:48:01

深入研究后,我意识到Google云端硬盘用户界面确实允许自定义mimeType。一个警告是,我只知道这一点肯定可以与基于xml或的自定义mimeTypes一起使用json

我将描述应用程序如何使用/通过我们自己的存储空间传输/自定义文件,然后说明如何将其与Google云端硬盘和云端硬盘UI配合使用。

在应用程序内使用自定义文件要在应用程序/数据库周围传输数据,文件的格式为json或,xml但mimeTypes的格式为application/custom+xmlapplication/custom+json这些文件还有一个fileType供内部使用的自定义,当我们在文件中移动POST各个端点时,当我们在文件中四处移动时,它就是该mimeType的一部分看起来像application/custom+xml; fileType=subCustomType另外,由于从技术上讲,这只是基于xmljsonmimeType也可以是text/xmlapplication/json

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

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

现在,我们已经配置了自定义的mimeType和文件扩展名,因此可以配置Google Drive UI,我们可以设置UI集成。请注意,这不会带来有用的错误,因此,我将指出在尝试保存更改时学到的知识。但是,这里是有关“打开URL”以及自定义mimeTypes和文件扩展名的正确信息的屏幕截图。(请注意,我没有嵌入图像的能力,因此这里是一个链接)。 Google云端硬盘用户界面集成屏幕截图

注意事项:

  1. Open URL(如果要同时配置,还需要New URL)必须是有效的域,不能是localhost,请相信我,我试过了,它不起作用。
  2. 对于文件扩展名,你需要采用“ /格式,但一侧不起作用。
  3. 对于文件扩展名,你无需输入'。'。抛出一个错误,只是名称就足够了。
  4. 屏幕快照中未显示图片,但你至少需要一个特定像素x像素值的应用程序图标,通常在不起作用时易于诊断,如果尺寸不正确,则图片将不被接受。

完成此操作并给Google提供时间进行自我更新后,你应该可以将鼠标悬停在该应用程序的特定文件上,并建议你打开应用程序!