这是我的上传代码:
- (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上传/下载文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)