4

iOS アプリで、Dropbox が提供する「uploadFile」呼び出しを使用しようとしています。ALAssetsLibrary を使用して、プログラムで取得した特定の写真/ビデオをアセットとして選択しています。その特定のアセットを Dropbox にアップロードする必要があります。

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

Dropbox は、「assets-library://asset/asset.PNG?...」のようなアセットが運ぶパスを好まないようです。

アプリの位置情報サービスを有効にして、すべての資産も一覧表示できます。

アップロード呼び出しにより、ログに「[警告] DropboxSDK: ファイルが存在しません (assets-library://asset/asset.PNG?id=5DC234C1-B27E-45E2-BE61-46E9A266C818&ext=PNG)」というエラーがスローされます。

uploadFileFailedWithError 関数がエラーで呼び出されます - ("Error Domain=dropbox.com Code=1001 "The operation could not be completed. (dropbox.com error 1001.")

uploadFile 呼び出し、特に「from」パスの送信方法に問題はありますか?? どんな助けでも大歓迎です。

4

2 に答える 2

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];
}
于 2012-12-13T18:00:08.520 に答える