0

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.

An1Ba7
  • 355
  • 11
  • 25

2 Answers2

11

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)

Richard J. Ross III
  • 55,009
  • 24
  • 135
  • 201
  • 1
    it should be ...`fromPath:file` – Mundi Jan 20 '12 at 14:34
  • @AnkurBarthakur if my solution worked, why didn't you accept it? – Richard J. Ross III Jan 20 '12 at 15:10
  • @RichardJ.RossIII sorry, my mistake, I am new to StackOverflow, now I have accepted it.:) – An1Ba7 Jan 21 '12 at 04:57
  • +1 for the tip about the UIImageJPEGRepresentation and compression value. – Shailesh Jun 13 '13 at 11:18
  • Isn't there any way to get the path of the file in Photo Library, as I would be batch uploading images. I am using `ALAssetLibrary` to get the images. It returns me a path like this(I am not sure if its valid Photo Library path I can use in dropbox's `uploadFile` function: assets-library://asset/asset.JPG?id=B08A601B-55E3-4B83-80FA-8C09117232D3&ext=JPG – Ankit Malhotra Feb 15 '14 at 22:52
0

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];
}
Esepakuto
  • 1,332
  • 9
  • 12