Upload Image from UIImageView using DropBox SDK for Iphone

不问归期 提交于 2019-11-30 00:41:12

问题


I am a beginner to iOS development and have just started working with the DropBox SDK for iphone, I am currently using the MacOSX 10.6 version having the Xcode 3.2.5 on it(the simulator is 4.2). Using UIImagePickerController, I could display a selected image on the UIImageView. Now if I want to upload that particular image using DropBox SDK, I have to know its path on my application, as the following code is applied

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

this method is defined in DBRestClient.h, a library file from the DropBox SDK for iOS. But as from the above declaration of the method, the "fromPath" of the image which is present in the UIImageView needs to be ascertained to upload it to my account on dropbox. Can you please help me in how to determine the path, or for that matter, any work around which can be applicable.


回答1:


You would have to write the file to the file system first:

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];

Note that you could use .jpg too, which is faster, and more compressed, just change UIImagePNGRepresentation to UIImageJPEGRepresentation, and pass a compression value (0.8 - 0.9 is good)




回答2:


For reading files from Documents Directory (and share documents with iTunes) use this:

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

And also set in your info.plist the key Application supports iTunes file sharing to YES

For read a file embedded in your project (no iTunes file sharing) and linked with a folder from your File System use this:

#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]];
}

and also add the examplesPics folder to the "Copy Bundle Resources" Build Phase.

If you don't have a linkded folder, just grouped in your project use this:

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


来源:https://stackoverflow.com/questions/8942185/upload-image-from-uiimageview-using-dropbox-sdk-for-iphone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!