2012-12-13 188 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

相關問題