简体   繁体   中英

Upload Image from UIImageView using DropBox SDK for Iphone

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.

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)

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM