【问题标题】:MIME type switched from "image/jpeg" to "image/png"MIME 类型从“image/jpeg”切换到“image/png”
【发布时间】:2014-02-19 00:59:51
【问题描述】:

以下 2 个代码 sn-ps 演示了我在使用新的 Google Drive Android API / Google Play Services 4.2 (libver 15) 时遇到的问题。还是我不知道的功能?为了保持代码简单,所有的错误检查和初始化都被删除了。

1/ 我创建了一张“image/jpeg” MIME 类型的图片;

GoogleApiClient mGAC;
byte[] jpgBuffer;
DriveFolder fldr;

ContentsResult rslt = Drive.DriveApi.newContents(mGAC).await();
Contents cont = rslt.getContents();
cont.getOutputStream().write(jpgBuffer);
MetadataChangeSet meta = new MetadataChangeSet.Builder()
  .setTitle("foo.jpg").setMimeType("image/jpeg")
  .build();
fldr.createFile(mGAC, meta, cont);

Drive 中的一切都很好。图像在那里,看起来很棒,我什至可以将它发送给我妈妈。但这不是我所追求的。我想在我的 Android 应用程序的另一部分中检索它。

2/ 所以我试试这个:

Query query = new Query.Builder().addFilter(
  Filters.eq(SearchableField.MIME_TYPE, "image/jpeg")
).build();
MetadataBufferResult rslt = Drive.DriveApi.query(mGAC, query).await();
for (Metadata md : rslt.getMetadataBuffer()) {
  Log.d("TAG", md.getTitle() + " " + md.getMimeType());
}

结果:什么都没有。

我不会放弃,所以下一步是寻找任何文件。我在步骤 1/ 中保存的文件“foo.jpg”显示为“image/png”MIME 类型。

【问题讨论】:

  • 您是否尝试过将 mimetype 设为“image/*”。这样它将处理任何图像格式
  • 这个问题非常具体到“Google Drive Android API”,AFAIK 不支持通配符。
  • 我们会看看这个,但是您上传的二进制数据是否有可能实际上是 png 格式?
  • 你比我早了 7 分钟。所以它最终可能是关于 MIME 元数据字段所有权的争论。

标签: android google-drive-api google-play-services google-drive-android-api


【解决方案1】:

谜团解开了。 这是一个功能!

中的“jpgBuffer”
cont.getOutputStream().write(jpgBuffer);

实际上包含PNG二进制数据。因此,即使我的应用程序指定了“image/jpeg”MIME 类型,谷歌在窥探我(我的用户)数据后决定将 MIME 类型更正为“image/png”。还应该注意的是,它的发生有一定的延迟,使调试过程更加神秘。

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 2016-05-13
    • 2010-09-12
    • 2022-11-09
    • 2013-06-09
    • 2021-06-23
    • 2012-12-08
    • 2021-07-22
    相关资源
    最近更新 更多