Ios 无法成功从邮件下载图像和PDF
我是IOS开发新手,从邮件下载附件时遇到问题。当我尝试使用MailCore2 SDK从邮件目录下载图像或PDF附件到文档目录时,下载成功。但我的问题是,下载的图像或PDF不显示任何内容,即。,。它给了我一个文件,但有一个零字节的空文件。我知道问题出在NSData上,我用来写的文件不正确。但我无法解决它。请帮助我 这是我用来从邮件下载文件的代码Ios 无法成功从邮件下载图像和PDF,ios,objective-c,ipad,ios7,mailcore,Ios,Objective C,Ipad,Ios7,Mailcore,我是IOS开发新手,从邮件下载附件时遇到问题。当我尝试使用MailCore2 SDK从邮件目录下载图像或PDF附件到文档目录时,下载成功。但我的问题是,下载的图像或PDF不显示任何内容,即。,。它给了我一个文件,但有一个零字节的空文件。我知道问题出在NSData上,我用来写的文件不正确。但我无法解决它。请帮助我 这是我用来从邮件下载文件的代码 MCOIMAPFetchContentOperation * op = [self.imapSession fetchMessageByUIDOperat
MCOIMAPFetchContentOperation * op = [self.imapSession fetchMessageByUIDOperationWithFolder:@"INBOX" uid:[sender tag]];
[op start:^(NSError * error, NSData * data) {
if ([error code] != MCOErrorNone) {
return;
}
NSAssert(data != nil, @"data != nil");
MCOMessageParser * msg = [MCOMessageParser messageParserWithData:data];
if ([msg.attachments count] > 0)
{
MCOIMAPPart *part = [msg.attachments objectAtIndex:0];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *saveDirectory = [paths objectAtIndex:0];
NSLog(@"%@",part.filename);
NSString *attachmentPath = [[saveDirectory stringByAppendingString:@"/Downloads"] stringByAppendingPathComponent:part.filename];
if (fileExists) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message"
message:@"Fail Existed in Download Path."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
else{
[msg.data writeToFile:attachmentPath atomically:YES];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message"
message:@"Download Success /n Saved in Downloads"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
[self.tableView reloadData];
}
}];
请帮我摆脱这个问题,告诉我哪里出了错
提前谢谢。我以前是这样用的:
MCOIMAPFetchContentOperation*op=[self.imapsSession fetchMessageByUIDOperationWithFolder:@INBOX uid:[发件人标记]];
[操作开始:^N错误*错误,NSData*数据
{
如果[错误代码]!=mcoErrorOne
{
回来
}
NSAssertdata!=nil,@data!=nil;
MCOMessageParser*msg=[MCOMessageParser messageParserWithData:data];
如果[msg.attachments count]>0
{
MCOAttachment*附件=[msg.attachments objectAtIndex:0]; NSArray*path=nsSearchPathForDirectoriesIndomainsDocumentDirectory,NSUserDomainMask,是; NSString*saveDirectory=[path objectAtIndex:0]; NSLog@%@,attachment.filename; NSString*downLoadDirectory=[saveDirectory stringByAppendingString:@/Downloads]; 如果![[NSFileManager defaultManager]文件存在路径:下载目录] { [[NSFileManager defaultManager]createDirectoryAtPath:downLoadDirectory with IntermediateDirectory:YES属性:nil错误:nil]; } NSString*attachmentPath=[downLoadDirectory stringByAppendingPathComponent:attachment.filename]; 如果[[NSFileManager defaultManager]文件ExistSatPath:attachmentPath] { UIAlertView*警报=[[UIAlertView alloc]initWithTitle:@Message 消息:@下载路径中存在失败。 代表:赛尔夫 取消按钮:@好的 其他按钮:无]; [警报显示]; } 其他的 { BOOL res=[[attachment data]writeToFile:attachmentPath原子路径:YES]; 如果存在 { UIAlertView*警报=[[UIAlertView alloc]initWithTitle:@Message 消息:@Download Success/n已保存在下载中 代表:赛尔夫 取消按钮:@好的 其他按钮:无]; [警报显示]; } } }
}];有人帮我吗…[msg.attachments objectAtIndex:0];是一个MCOAttachment,不是MCOIMAPPart。然后,您必须使用part.data而不是msg.data来获取附件的内容。