2012-12-13 143 views
4

在我的iOS应用程序中,我尝试使用Dropbox提供的“uploadFile”调用。我正在使用ALAssetsLibrary选择以编程方式获取的特定照片/视频作为资产。我需要将该特定资产上传到Dropbox。无法上传文件(使用ALAsset库)到Dropbox使用Dropbox API

//ALAsset *asset is the asset i intend to upload 
[self.restClient uploadFile:[asset.defaultRepresentation filename] toPath:@"/" withParentRev:nil fromPath:[asset.defaultRepresentation.url absoluteString]]; 

的Dropbox似乎并不喜欢的道路,即资产携带,它看起来是这样的:“资产库://asset/asset.PNG ......”

我有启用位置服务的应用程序,我也能列出所有的资产。

上传调用抛出的错误,“[警告] DropboxSDK:文件不存在(资产库://asset/asset.PNG ID = 5DC234C1-B27E-45E2-BE61-46E9A266C818 & EXT = PNG) “,在日志中。

的uploadFileFailedWithError函数被调用一个错误 - (“错误域= dropbox.com代码= 1001‘的操作无法完成(dropbox.com错误1001’)

这有什么错关于我发送uploadFile调用的方式,特别是“from”路径??任何帮助将不胜感激。

回答

6

您只获得一个引用,而不是有效的文件url,这对AssetsLibrary以外的类无效。但是,您可以轻松获取资产数据并将其保存到磁盘上:

- (void)writeAsset:(ALAsset *)asset toPath:(NSString *)path 
{ 
    ALAssetRepresentation *representation = asset.defaultRepresentation; 
    long long size = representation.size; 
    NSMutableData *rawData = [[NSMutableData alloc] initWithCapacity:size]; 
    void *buffer = [rawData mutableBytes]; 
    [representation getBytes:buffer fromOffset:0 length:size error:nil]; 
    NSData *assetData = [[NSData alloc] initWithBytes:buffer length:size]; 
    [assetData writeToFile:path atomically:YES]; 
} 
+0

非常感谢!这对我有效! – codeToDeath

+0

@codeToDeath很高兴能帮到你!不要忘记将答案标记为已接受。 – hwaxxer

+0

@codeToDeath它保留了大小,它也适用于视频。 – hwaxxer

相关问题