ios - How to get NSURL from a Dropbox file? -


i'd use qlpreviewcontroller preview file stored in dropbox. qlpreviewcontroller takes nsurl, dropbox dbfile returns nsfilehandle * or file content in nsdata * or nsstring *.

what's proper way preview dropbox dbfile in qlpreviewcontroller?

i'm using dropbox sync api.

here's snippet copies dropbox file temp dir, "converting" dbfileinfo item nsurl.

this method:

  • assumes have self.file nsarray containing dbfileinfo items (see: [[dbfilesystem sharedfilesystem] listfolder:[dbpath root] error:&err]; )
  • opens , reads info item nsdata
  • writes tempurl same filename
  • and returns tempurl

the snippet not perfect, can used is. however, user info hud progress spinner should used (it may take while download file).

- (nsurl*)urlofdropboxitematindex:(nsuinteger)index {     if(index < self.files.count) {         //[self presentprocessingfilehud];         __block nsurl *fileurl;          dispatch_sync(dispatch_get_global_queue(dispatch_queue_priority_high, 0), ^{             nserror *err;             dbfileinfo *fileinfo = self.files[index];             nsstring *tempdir = nstemporarydirectory();             nsurl *tempurl = [nsurl fileurlwithpath:[tempdir stringbyappendingpathcomponent:@"dropbox-tmp"]];             // create tempurl             nsfilemanager *filemanager = [nsfilemanager defaultmanager];             if(![filemanager fileexistsatpath:tempurl.path]) {                 [filemanager createdirectoryaturl:tempurl withintermediatedirectories:yes attributes:nil error:&err];                 if(err) {                     nsstring *errmsg = [nsstring stringwithformat:@"error creating temp directory @ %@", tempurl.path];                     nslog(@"%@",errmsg);                     [self presenterrorhudwithmessage:errmsg];                 }             }             fileurl = [tempurl urlbyappendingpathcomponent:fileinfo.path.name];             // read dropbox file             dbfile *file = [[dbfilesystem sharedfilesystem] openfile:fileinfo.path error:&err];             if(file && !err) {                 nsdata *filedata = [file readdata:&err];                 if(err) { nslog(@"error reading data file %@ (%@)", fileurl.path, err); }                 [filedata writetourl:fileurl atomically:yes];                 [file close];                 //[self dismisshud];              } else {                 nsstring *errstr = [nsstring stringwithformat:@"error accessing dropbox file %@ (%@)", fileurl.path, err];                 nslog(@"%@", errstr);                 //[self presenterrorhudwithmessage:errstr];                 fileurl = nil;              }         });         return fileurl;      } else {         return nil;     } } 

Comments

Popular posts from this blog

assembly - 8086 TASM: Illegal Indexing Mode -

Java, LWJGL, OpenGL 1.1, decoding BufferedImage to Bytebuffer and binding to OpenGL across classes -

javascript - addthis share facebook and google+ url -