Загрузить в память UIimage в Dropbox в iOS - PullRequest
1 голос
/ 23 марта 2011

Я хочу загрузить изображение, созданное моим приложением, в Dropbox. Я вижу метод загрузки из DBRestClient, но мне кажется, что мне нужно записать изображение во временный файл перед вызовом метода загрузки.

Есть ли способ загрузить файл из объекта в память? Примерно так:

UIimage *myImage = [[UIImage alloc]....
//
// Here I create the image on my app
//
NSData *myData = UIImageJPEGRepresentation(myImage, 1.0);
DBRestClient *rc = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
self.restClient = rc;
[rc release];
self.restClient.delegate = self;
[self.restClient uploadFile:@"myImage.jpg" toPath:@"DropBoxPath" fromPath:myData];

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

Вот как я реализовал решение:

- (void) uploadToDropBox {
    self.restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
    self.restClient.delegate = self;
    [self.restClient createFolder:dropBoxFolder];

    NSString *fileName = @"myImage.png"; 
    NSString *tempDir = NSTemporaryDirectory();
    NSString *imagePath = [tempDir stringByAppendingPathComponent:fileName];

    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(self.loadQRCodeImage.image)];
    [imageData writeToFile:imagePath atomically:YES];

    [self.restClient uploadFile:fileName toPath:dropBoxFolder fromPath:imagePath];
}
3 голосов
/ 23 марта 2011

Заголовок DBRestClient показывает только

/* Uploads a file that will be named filename to the given root/path on the server. It will upload
   the contents of the file at sourcePath */
- (void)uploadFile:(NSString*)filename toPath:(NSString*)path fromPath:(NSString *)sourcePath;

В iPhone есть диск, поэтому загрузите свое изображение в виде tmp-файла данным методом и впоследствии удалите?Для этой цели вы можете использовать writeToFile: атомарно: или writeToFile: параметры: ошибка: из NSData .

...