Forum Discussion

AppleGG's avatar
AppleGG
Helpful | Level 6
8 years ago

iOS Objective C. up/download URL.

I can't seem to get the right response block for these. A little Help?

 

Also one parameter is labeled as a URL but takes a string, which I assume is a path.

 

Your web page examples on file transfers are in sore need of being updated.

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff

    It sounds like you're referring to uploadUrl and downloadUrl. The documentation there has more information, but the first parameter to each is the remote path in Dropbox (that is, the path where you want to upload to or download from, respectively.) The URL parameter is likewise the file URL to upload from or download to, respectively.

     

    Here are some examples of what those would look like:

     

    [[client.filesRoutes uploadUrl:@"/test.txt" inputUrl:[NSURL fileURLWithPath:@"/local/path/to/test.txt"]]
     setResponseBlock:^(DBFILESFileMetadata *metadata, DBFILESUploadError *uploadError, DBRequestError *error) {
        if (metadata) {
            NSLog(@"The upload completed successfully.");
            NSLog(@"File metadata:");
            NSLog(@"%@", metadata);
        } else if (uploadError) {
            NSLog(@"Something went wrong with the upload:");
            NSLog(@"%@", uploadError);
        } else if (error) {
            NSLog(@"Something went wrong with the API call:");
            NSLog(@"%@", error);
        }
    }];
    [[client.filesRoutes downloadUrl:@"/test.txt" overwrite:true destination:[NSURL fileURLWithPath:@"/local/path/to/test.txt"]]
     setResponseBlock:^(DBFILESFileMetadata *metadata, DBFILESDownloadError *downloadError, DBRequestError *error, NSURL *destination) {
             if (metadata) {
                 NSLog(@"The download call completed successfully.");
                 NSLog(@"File metadata:");
                 NSLog(@"%@", metadata);
             } else if (downloadError) {
                 NSLog(@"Something went wrong with the download:");
                 NSLog(@"%@", downloadError);
             } else if (error) {
                 NSLog(@"Something went wrong with the API call:");
                 NSLog(@"%@", error);
             }
     }];

     

    If this isn't working for you, can you share the code that isn't working for you and the error you're getting?

    • tslanina's avatar
      tslanina
      New member | Level 2

      Hey,

      Your example contains:

      inputUrl:[NSURL fileURLWithPath:@"/local/path/to/test.txt"

      But when you check DBFILESUserAuthRoutes, there's :

      - (DBUploadTask *)uploadUrl:(NSString *)path inputUrl:(NSString *)inputUrl

      So, the inputUrl argument is an NSString, not NSURL type.

      Moreover, uploadUrl calls requestUpload, where the inputUrl (named as input) is converted to NSURL:

       

      - (DBUploadTaskImpl *)requestUpload:(DBRoute *)route arg:(id<DBSerializable>)arg inputUrl:(NSString *)input {
        NSURL *inputUrl = [NSURL fileURLWithPath:input];

       

      So, reasuming. Direct file path ( NSString*) should be passed to uploadUrl,  not the URL.

      The "inputUrl" name is also misleading (probably leftover from previous version??),  should be inputPath, so

       

      inputUrl:(NSURL *)inputUrl

       

      or

       

      inputPath:(NSString *)inputUrl  

       

      Would be much better.

      The same problem is with other args with "Url" in name abd NSString* type.

      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff

        tslanina That's correct, these NSURL parameters were changed to NSString in v3.0.11 after I wrote the examples above.

         

        I'll send this along to the team as a request to update the method/parameter names to clarify.

    • Bob S.15's avatar
      Bob S.15
      Collaborator | Level 9

      I'm getting an "unrecognized selector sent to instance" for uploadURL. Trying to update to newest SDK from the old one that supported iOS 8.  Those links you posted are broken.  Is uploadURL gone?  What's its replacement???

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.5,949 PostsLatest Activity: 43 minutes ago
352 Following

If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.

For more info on available support options for your Dropbox plan, see this article.

If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!