2017-07-14 71 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