Как загрузить изображение, которое не сохранено на устройстве, в аккаунт Dropbox? (IOS) - PullRequest
2 голосов
/ 24 января 2012

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

NSString *localPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
NSString *jpegFilePath = [NSString stringWithFormat:@"%@/test.jpeg",localPath];
NSData *data2 = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)];
[data2 writeToFile:jpegFilePath atomically:YES];

NSString *filename = @"test.jpeg";

NSString *destDir = @"/";
[[self restClient] uploadFile:filename toPath:destDir
                withParentRev:nil fromPath:localPath];

Я идиот, решил

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingString:@"test.jpg"];

NSData * data = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)];
[data writeToFile:path atomically:YES];
[self.restClient uploadFile:@"test.jpg" toPath:@"/" withParentRev:nil fromPath:path];

Ответы [ 2 ]

2 голосов
/ 06 ноября 2012

вам придется вызывать методы DBRestClient из основного потока или потока, имеющего цикл выполнения. В противном случае методы делегата не будут вызваны.

Что вам нужно будет сделать, это сначала выделить объект initRoir DBRestClient, затем сделать его делегированным самостоятельно, а затем вы можете легко загрузить свой файл. Ниже приведен пример

NSString *destDir = @"/";
restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
restClient.delegate = self;

[restClient uploadFile:yourfilename toPath:destDir withParentRev:nil fromPath:sourcepath];

Счастливое кодирование !!!!!!

1 голос
/ 24 января 2012

Вы не можете сохранить в связке. Вам следует использовать папку документов или кеша:

 NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
...