2017-07-14 72 views
2

我试图解释上传文件时Google Drive REST API的文档。对于iOS和Android,文档似乎都要求在两个地方指定上传的MIME类型:上传的元数据和媒体内容本身。是否重复在Google Drive API中上传所需的MIME类型?

举例来说,这里是我是如何被上传在Android的一个文件:

final File fileMetadata = new File() 
    .setName("Sample File.mytikkun") 
    .setMimeType("application/vnd.zigzagworld.sample") 
    .setParents(Collections.singletonList(rootFolderId)); 

final ByteArrayContent content = ByteArrayContent.fromString(
    "application/vnd.zigzagworld.sample", 
    "Sample data"); 

mDriveService 
    .files() 
    .create(fileMetadata, content) 
    .setFields("id") 
    .execute(); 

而这里的iOS中/斯威夫特同样的事情:

let metaData = GTLRDrive_File() 
metaData.name = "Sample File.mytikkun" 
metaData.mimeType = "application/vnd.zigzagworld.sample" 
metaData.parents = [ prefs.rootFolderId! ] 

let content = GTLRUploadParameters(
    data: "Sample Data".data(using: String.Encoding.utf8)!, 
    mimeType: "application/vnd.zigzagworld.sample") 

let query = GTLRDriveQuery_FilesCreate.query(
    withObject: metaData, 
    uploadParameters: content) 
query.fields = "id" 

service.executeQuery(query) { ticket, file, error in 
    // ... 
} 

上面的代码工作,但MIME类型的重复看起来像是一种代码味道。有什么方法可以避免它?

回答

1

这两种MIME类型有不同的用途。上传过程中,云端硬盘能够将MS Excel工作表转换为Google电子表格。因此,文件元数据中的MIME类型说明生成的驱动器文件应该是哪种MIME类型。上传请求中的MIME类型是Drive应该如何解释现有文件格式。

+0

这很有道理。如果我忽略元数据中的MIME类型,Drive会从内容中挑选MIME类型? (我想我可以试着找出答案,但这种方法刚刚发生在我身上,而且询问似乎比试验​​更容易。) –

+0

它可能会做,但由于这是一种无证的行为,它可能会改变。此外,您还可以通过提供价值来冒着图书馆“帮助”您的风险。所以,imho在指定目标MIME类型时要更加明确。 – pinoyyid