使用DropBox SDK for Iphone从UIImageView上传图像

时间:2012-01-20 13:32:03

标签: iphone objective-c ios uiimageview dropbox

我是iOS开发的初学者,刚开始使用DropBox SDK for iphone,我目前正在使用MacOSX 10.6版本,其上有Xcode 3.2.5(模拟器为4.2)。使用UIImagePickerController,我可以在UIImageView上显示一个选定的图像。现在,如果我想使用DropBox SDK上传该特定图像,我必须知道我的应用程序的路径,因为应用了以下代码

- (void)uploadFile:(NSString*)filename toPath:(NSString*)path fromPath:(NSString *)sourcePath

此方法在DBRestClient.h中定义,DBRestClient.h是来自DropBox SDK for iOS的库文件。但是从上面的方法声明中,需要确定UIImageView中存在的图像的“fromPath”以将其上传到我在dropbox上的帐户。能否帮助我确定如何确定路径,或者就此而言,可以适用的任何工作。

2 个答案:

答案 0 :(得分:11)

您必须先将文件写入文件系统:

NSData *data = UIImagePNGRepresentation(imageView.image);
NSString *file = [NSTemporaryDirectory() stringByAppendingPathComponent:@"upload.png"];

[data writeToFile:file atomically:YES];
[DBRestClient uploadFile:@"upload.png" toPath:@"Dropbox/Path" fromPath:file];

请注意,您也可以使用.jpg,速度更快,压缩更多,只需将UIImagePNGRepresentation更改为UIImageJPEGRepresentation,然后传递压缩值(0.8 - 0.9即可)< / p>

答案 1 :(得分:0)

要从文档目录中读取文件(并与iTunes共享文档),请使用以下命令:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,  YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"FILE_NAME" stringByAppendingString:@".EXTENSION"]];

并在info.plist中设置密钥Application supports iTunes file sharing为YES

要读取项目中嵌入的文件(没有iTunes文件共享)并与文件系统中的文件夹链接,请使用:

#define EXAMPLES_PATH @"/examplesPics/"

- (NSString *) relativePathForExampleImage: (NSString *) fileName {
    return [[EXAMPLES_PATH stringByAppendingString:self.folderName] stringByAppendingString:fileName];
}

- (NSString *) absolutePathForExampleImage: (NSString *) fileName {
    return [[[NSBundle mainBundle] bundlePath] stringByAppendingString:[self relativePathForExampleImage:fileName]];
}

并将examplesPics文件夹添加到“Copy Bundle Resources”构建阶段。

如果您没有链接文件夹,只需在项目中分组即可使用:

- (NSString *) absolutePathForExampleImage: (NSString *) fileName {
    return [[[NSBundle mainBundle] bundlePath] stringByAppendingString:fileName];
}