ios – 如何使用Xcode从向Dropbox上传下载文件

ios – 如何使用Xcode从向Dropbox上传下载文件,第1张

概述我如何从/向Dropbox上传/下载文件?我在我的应用程序中集成了Dropbox应用程序,但我无法上传/下载文件. 这是我的上传代码: - (NSString *)getDocumentPath{ NSMutableData * pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, sel 我如何从/向DropBox上传/下载文件?我在我的应用程序中集成了DropBox应用程序,但我无法上传/下载文件.

这是我的上传代码:

- (Nsstring *)getdocumentPath{    NSMutableData * pdfData = [NSMutableData data];    UIGraphicsBeginPdfcontextToData(pdfData,self.vIEw.bounds,nil);    UIGraphicsBeginpdfpage();    CGContextRef pdfcontext = UIGraphicsGetCurrentContext();    [self.vIEw.layer renderInContext:pdfcontext];    UIGraphicsEndPdfcontext();    NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES);    Nsstring *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"vani.doc"];    [pdfData writetofile:path  atomically:YES];    return path;}- (IBAction)upload:(ID)sender {    Nsstring *path = [self getdocumentPath];    Nsstring * local = [path lastPathComponent];    Nsstring *destDir = @"/PList Folder/vani.doc";    [restClIEnt uploadfile:local topath:destDir withParentRev:nil fromPath:path];

这是下载:

restClIEnt = [[DBRestClIEnt alloc] initWithSession:[DBSession sharedSession]];    restClIEnt.delegate = self;    Nsstring *filename = [Nsstring stringWithFormat:@"/vani.doc"];    NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES);    Nsstring *documentsDirectory = [paths objectAtIndex:0];    Nsstring *path2 = [documentsDirectory stringByAppendingString:                       [Nsstring stringWithFormat:@"%@",filename]];    //NSLog(@"%@",path2);    [restClIEnt loadfile:filename intopath:path2];
解决方法 在这种情况下,让我帮助你,我已经创建了DropBox的Wrapper类,在我的一个项目中使用了以下代码.它不支持ARC.创建DropBoxManager标头和实现文件
如果您是初学者,这可能对您来说太过分了,但是请尝试阅读完整的答案并按照一步一步的步骤进行 *** 作.如果有任何问题,请告诉我,我会帮忙.

DropBoxManager.h的代码

#import <Foundation/Foundation.h>#import <Dropboxsdk/Dropboxsdk.h>#define kDropBox_AppKey @"" // ProvIDe your key here#define kDropBox_AppSecret @"" // ProvIDe your secret key here#define kDropBox_RootFolder kDbrootDropBox //DecIDe level access like root or app@protocol DropBoxDelegate;typedef enum {    DropBoxTypestatusNone = 0,DropBoxGetAccountInfo = 1,DropBoxGetFolderList = 2,DropBoxCreateFolder = 3,DropBoxUploadfile = 4} DropBoxPostType;@interface DropBoxManager : NSObject <DBRestClIEntDelegate,DBSessionDelegate,UIAlertVIEwDelegate>{    UIVIEwController<DropBoxDelegate> *APICallDelegate;    DBSession *objDBSession;    Nsstring *relinkUserID;     DBRestClIEnt *objRestClIEnt;    DropBoxPostType currentPostType;    Nsstring *strfilename;    Nsstring *strfilePath;    Nsstring *strDestDirectory;    Nsstring *strFolderCreate;    Nsstring *strFolderToList;}@property (nonatomic,retain) DBSession *objDBSession;@property (nonatomic,retain) Nsstring *relinkUserID;@property (nonatomic,assign) UIVIEwController<DropBoxDelegate> *APICallDelegate;@property (nonatomic,retain) DBRestClIEnt *objRestClIEnt;@property (nonatomic,assign) DropBoxPostType currentPostType;@property (nonatomic,retain) Nsstring *strfilename;@property (nonatomic,retain) Nsstring *strfilePath;@property (nonatomic,retain) Nsstring *strDestDirectory;@property (nonatomic,retain) Nsstring *strFolderCreate;@property (nonatomic,retain) Nsstring *strFolderToList;//Singleton+(ID)dropBoxManager;//Initialize dropBox-(voID)initDropBox;//Authentication Verification-(BOol)handledURL:(NSURL*)url;-(voID)dropBoxDIDLogin;-(voID)dropBoxDIDNotLogin;//Upload file-(voID)uploadfile;//Download file-(voID)downlaodfileFromSourcePath:(Nsstring*)pstrSourcePath destinationPath:(Nsstring*)topath;//Create Folder-(voID)createFolder;//Get Account information-(voID)loginToDropBox;-(voID)logoutFromDropBox;-(BOol)isLoggedIn;//List Folders-(voID)ListFolders;@end@protocol DropBoxDelegate <NSObject>@optional- (voID)finishedLogin:(NSMutableDictionary*)userInfo;- (voID)FailedTologin:(Nsstring*)withMessage;- (voID)finishedCreateFolder;- (voID)FailedToCreateFolder:(Nsstring*)withMessage;- (voID)finishedUploadfile;- (voID)FailedToUploadfile:(Nsstring*)withMessage;- (voID)finishedDownloadfile;- (voID)FailedTodownloadfile:(Nsstring*)withMessage;- (voID)getFolderContentFinished:(DBMetadata*)Metadata;- (voID)getFolderContentFailed:(Nsstring*)withMessage;@end

DropBoxManager.m的代码

#import "DropBoxManager.h"@implementation DropBoxManager@synthesize objDBSession,relinkUserID,APICallDelegate;@synthesize objRestClIEnt;@synthesize currentPostType;@synthesize strfilename;@synthesize strfilePath;@synthesize strDestDirectory;@synthesize strFolderCreate;@synthesize strFolderToList;static DropBoxManager *singletonManager = nil;+(ID)dropBoxManager{    if(!singletonManager)        singletonManager = [[DropBoxManager alloc] init];    return singletonManager;}-(voID)initDropBox{    DBSession* session =  [[DBSession alloc] initWithAppKey:kDropBox_AppKey appSecret:kDropBox_AppSecret root:kDropBox_RootFolder];    session.delegate = self;     [DBSession setSharedSession:session];    [session release];    if([[DBSession sharedSession] islinked] && objRestClIEnt == nil)    {               self.objRestClIEnt = [[DBRestClIEnt alloc] initWithSession:[DBSession sharedSession]];        self.objRestClIEnt.delegate = self;    }   }-(voID)checkForlink{    if(![[DBSession sharedSession] islinked])        [[DBSession sharedSession] linkFromController:APICallDelegate];}-(BOol)handledURL:(NSURL*)url{    BOol islinked=NO;    if ([[DBSession sharedSession] handleOpenURL:url])     {        if([[DBSession sharedSession] islinked])        {            islinked=YES;            [self dropBoxDIDLogin];        }        else        {            islinked = NO;            [self dropBoxDIDNotLogin];        }    }    return islinked;}#pragma mark -#pragma mark Handle login-(voID)dropBoxDIDLogin{    NSLog(@"Logged in");    if([[DBSession sharedSession] islinked] && self.objRestClIEnt == nil)    {               self.objRestClIEnt = [[DBRestClIEnt alloc] initWithSession:[DBSession sharedSession]];        self.objRestClIEnt.delegate = self;    }       switch(currentPostType)    {        case DropBoxTypestatusNone:            break;        case DropBoxGetAccountInfo:            [self loginToDropBox];            break;        case DropBoxGetFolderList:            [self ListFolders];            break;        case DropBoxCreateFolder:            [self createFolder];            break;        case DropBoxUploadfile:            [self uploadfile];            break;              }    //[(MainVIEwController*)APICallDelegate setLoginStatus];}-(voID)dropBoxDIDNotLogin{    NSLog(@"Not Logged in");    switch(currentPostType)    {        case DropBoxTypestatusNone:            break;        case DropBoxUploadfile:            if([self.APICallDelegate respondsToSelector:@selector(FailedToUploadfile:)])                [self.APICallDelegate FailedToUploadfile:@"Problem connecting dropBox. Please try again later."];            break;        case DropBoxGetFolderList:            break;        case DropBoxCreateFolder:            break;        case DropBoxGetAccountInfo:            break;    }   }#pragma mark -#pragma mark DBSessionDelegate methods- (voID)sessionDIDReceiveAuthorizationFailure:(DBSession*)session userID:(Nsstring *)userID {    relinkUserID = [userID retain];    [[[[UIAlertVIEw alloc] initWithTitle:@"DropBox Session Ended" message:@"Do you want to relink?" delegate:self cancelbuttonTitle:@"Cancel" otherbuttonTitles:@"Relink",nil] autorelease] show];}- (voID)alertVIEw:(UIAlertVIEw *)alertVIEw clickedbuttonAtIndex:(NSInteger)index {    if (index != alertVIEw.cancelbuttonIndex)        [[DBSession sharedSession] linkUserID:relinkUserID fromController:APICallDelegate];    [relinkUserID release];    relinkUserID = nil;}#pragma mark -#pragma mark fileupload-(voID)uploadfile{    if([[DBSession sharedSession] islinked])        [self.objRestClIEnt uploadfile:strfilename topath:strDestDirectory withParentRev:nil fromPath:strfilePath];    else        [self checkForlink];}-(voID)downlaodfileFromSourcePath:(Nsstring*)pstrSourcePath destinationPath:(Nsstring*)topath{    if([[DBSession sharedSession] islinked])        [self.objRestClIEnt loadfile:pstrSourcePath intopath:topath];    else        [self checkForlink];}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt uploadedfile:(Nsstring*)destPath from:(Nsstring*)srcPath Metadata:(DBMetadata*)Metadata {       if([self.APICallDelegate respondsToSelector:@selector(finishedUploadefile)])        [self.APICallDelegate finishedUploadfile];    NSLog(@"file uploaded successfully to path: %@",Metadata.path);}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt loadedfile:(Nsstring*)destPath ContentType:(Nsstring*)ContentType{    if([self.APICallDelegate respondsToSelector:@selector(finishedDownloadfile)])        [self.APICallDelegate finishedDownloadfile];}-(voID)restClIEnt:(DBRestClIEnt *)clIEnt loadfileFailedWithError:(NSError *)error{    if([self.APICallDelegate respondsToSelector:@selector(FailedTodownloadfile:)])        [self.APICallDelegate FailedTodownloadfile:[error description]];}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt uploadfileFailedWithError:(NSError*)error {       if([self.APICallDelegate respondsToSelector:@selector(FailedToUploadfile:)])        [self.APICallDelegate FailedToUploadfile:[error description]];    NSLog(@"file upload Failed with error - %@",error);}#pragma mark -#pragma mark Create Folder-(voID)createFolder{    if([[DBSession sharedSession] islinked])        [self.objRestClIEnt createFolder:strFolderCreate];    else        [self checkForlink];}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt createdFolder:(DBMetadata*)folder{    if([self.APICallDelegate respondsToSelector:@selector(finishedCreateFolder)])        [self.APICallDelegate finishedCreateFolder];    NSLog(@"Folder created successfully to path: %@",folder.path);}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt createFolderFailedWithError:(NSError*)error{    if([self.APICallDelegate respondsToSelector:@selector(FailedToCreateFolder:)])        [self.APICallDelegate FailedToCreateFolder:[error description]];    NSLog(@"Folder create Failed with error - %@",error);}#pragma mark -#pragma mark Load account information-(voID)loginToDropBox{    if([[DBSession sharedSession] islinked])        [self.objRestClIEnt loadAccountInfo];    else        [self checkForlink];}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt loadedAccountInfo:(DBAccountInfo*)info{    if([self.APICallDelegate respondsToSelector:@selector(finishedLogin:)])    {        NSMutableDictionary *userInfo = [[[NSMutableDictionary alloc] init] autorelease];        [userInfo setobject:info.displayname forKey:@"Username"];        [userInfo setobject:info.userID forKey:@"UserID"];        [userInfo setobject:info.referrallink forKey:@"Refferellink"];        [self.APICallDelegate finishedLogin:userInfo];    }    NSLog(@"Got information: %@",info.displayname);}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt loadAccountInfoFailedWithError:(NSError*)error{    if([self.APICallDelegate respondsToSelector:@selector(FailedTologin:)])        [self.APICallDelegate FailedTologin:[error description]];    NSLog(@"Failed to get account information with error - %@",error);}#pragma mark -#pragma mark logout-(voID)logoutFromDropBox{    [[DBSession sharedSession] unlinkAll];    [self.objRestClIEnt release];}#pragma mark -#pragma mark Check for login-(BOol)isLoggedIn{    return [[DBSession sharedSession] islinked] ? YES : NO;}#pragma mark -#pragma mark Load Folder List -(voID)ListFolders{    NSLog(@"Here-->%@",self.strFolderToList);    if([[DBSession sharedSession] islinked])        [self.objRestClIEnt loadMetadata:self.strFolderToList];    else        [self checkForlink];    }- (voID)restClIEnt:(DBRestClIEnt*)clIEnt loadedMetadata:(DBMetadata*)Metadata{    if (Metadata.isDirectory)    {        NSLog(@"Folder '%@' contains:",Metadata.contents);        for (DBMetadata *file in Metadata.contents)        {            NSLog(@"\t%@",file);        }        if([APICallDelegate respondsToSelector:@selector(getFolderContentFinished:)])            [APICallDelegate getFolderContentFinished:Metadata];    }    NSLog(@"Folder List success: %@",Metadata.path);}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt MetadataUnchangedAtPath:(Nsstring*)path{}- (voID)restClIEnt:(DBRestClIEnt*)clIEnt loadMetadataFailedWithError:(NSError*)error{    NSLog(@"Load Meta data Failed with error - %@",error);    if([APICallDelegate respondsToSelector:@selector(getFolderContentFailed:)])        [APICallDelegate getFolderContentFailed:[error localizedDescription]];}

例如.用法头文件

//Your vIEw controller header file.#import <UIKit/UIKit.h>#import "DropBoxManager.h"@interface YourVIEwController : UIVIEwController <DropBoxDelegate>{    DropBoxManager *objManager;}@property (nonatomic,assign) DropBoxManager *objManager;-(IBAction)btnUploadfileTapped:(ID)sender;@end

例如.用法实施文件

#import "YourVIEwController.h"@implementation YourVIEwController@synthesize objManager;// Implement vIEwDIDLoad to do additional setup after loading the vIEw,typically from a nib.- (voID)vIEwDIDLoad {    [super vIEwDIDLoad];    objManager = [DropBoxManager dropBoxManager];    objManager.APICallDelegate =self;    [objManager initDropBox];}-(IBAction)btnUploadfileTapped:(ID)sender{    objManager.currentPostType = DropBoxUploadfile;    objManager.strfilename  = @"Yourfilename";    objManager.strfilePath = @"YourfilePath";    objManager.strDestDirectory = @"/";    [objManager uploadfile];}#pragma mark -#pragma mark file upload delegate- (voID)finishedUploadfile{    NSLog(@"Uploaded successfully.");}- (voID)FailedToUploadfile:(Nsstring*)withMessage{    NSLog(@"Failed to upload error is %@",withMessage);}@end
总结

以上是内存溢出为你收集整理的ios – 如何使用Xcode从/向Dropbox上传/下载文件全部内容,希望文章能够帮你解决ios – 如何使用Xcode从/向Dropbox上传/下载文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1052636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存