2014-04-15 84 views
0

我目前能够使用iOS SDK将MP3文件上传到Google云端硬盘,但是我遇到了一个问题,我无法将ID3标签在文件内。有没有办法将这些信息直接添加到GTLDriveFile中,或者至少有一些替代方法?将带有MP3文件的ID3标签上传到Google云端硬盘 - iOS SDK

当前代码:

GTLDriveParentReference *parentRef = [GTLDriveParentReference object]; 
parentRef.identifier = self.kDriveMusicDirID; 
parentRef.isRoot = NO; 

GTLDriveFileThumbnail *thumbnail = [[GTLDriveFileThumbnail alloc] init]; 
thumbnail.image = GTLEncodeWebSafeBase64(UIImageJPEGRepresentation(file.image, 80)); 
thumbnail.mimeType = @"image/jpeg"; 

GTLDriveFile *driveFile = [[GTLDriveFile alloc] init]; 
NSString *title = [NSString stringWithFormat:@"%@ - %@.mp3", file.artist, file.songTitle]; 
driveFile.title = title; 
driveFile.mimeType = @"audio/mp3"; 
driveFile.parents = @[parentRef]; 
driveFile.thumbnail = thumbnail; 

AVURLAsset *songAsset = [AVURLAsset assetWithURL:file.assetURL]; 
[self extractDataForAsset:songAsset withCallback:^(NSData *data, NSError *error) 
{ 
if (error == nil) 
{ 
GTLUploadParameters *uploadParameters = 
[GTLUploadParameters uploadParametersWithData:data 
            MIMEType:driveFile.mimeType]; 

GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:driveFile 
                uploadParameters:uploadParameters]; 

[self.driveService executeQuery:query 
       completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) 
    { 
    if (error == nil) 
    { 
    completion(nil); 
    } 
    else 
    { 
    completion(error); 
    } 
}]; 
} 
else 
{ 
    //handle the error. notification that the upload has failed. 
} 
}]; 
+0

ID3标签,你能解释一下是什么意思? – ChenSmile

+0

ID3标签嵌入在一个MP3文件中,该文件可保存关于艺术家,歌曲,专辑,流派等信息。 当您将MP3曲目导入iTunes等音乐播放器时,ID3标记用于将详细信息添加到软件中自动。没有ID3标签,每次你将音乐导入到音乐播放器中,你都必须手动输入艺术家的详细信息,歌曲名称等。 –

+0

可以显示你上传MP3文件到g盘的代码 – ChenSmile

回答

1

谷歌云端硬盘可让我们以简单的上传,多部分上传和可恢复上传上传文件。如果您想要随要上传的数据一起发送元数据,则可以制作一个多部分/相关请求

要使用多上传,做一个POST或PUT请求到方法/上传URI并添加查询参数uploadType=multipart

例如:

POST https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart

有关详细信息,请参阅HERE

+0

这不是元数据,至少在Google Drive和他们的API方面。当我将它上传到Google Drive时,我正在考虑将MP3文件中的信息标签(ID3标签)组合在一起。但似乎这是不可能的,因为iOS设备上的音频文件必须转换为NSData格式,然后以这种方式发送到Google Drive,这不幸似乎会自动去除ID3标签。 –

+0

@AndyShephard我给你的链接,它显示,如何可以上传多部分参数.... – ChenSmile

+0

虽然我感谢你给我的帮助,答案并不是真正针对iOS客户端库,因此,我无法使用这样的代码。但是,尽管Google Drive在技术上允许我使用ID3标签上传文件,但我遇到的问题是iOS系统,不允许将MP3文件轻松提取到远程源。唯一的解决方案是去掉ID3标签,并将音频轨道转换为NSData,然后将其上传到远程源。 –

相关问题