私はObjective Zipライブラリを使用して、私はイメージを圧縮しているところ(私が推測するところ)に来た。ZipファイルをNSDataに変換して、Zipファイルを添付ファイルとして電子メールで送信するにはどうすればいいですか?
今、このzippedファイルをメールコンポーザーで送信します。しかし、私は自分のメール機能内で "NSDataオブジェクト"を宣言する必要があります。
[picker addAttachmentData:"NSData object" mimeType:@"application/zip" fileName:@"test.zip"];
は、ここに私のコードのsnippitだ
-(IBAction)sendMail{
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"test.zip"];
NSArray *data = [[NSArray alloc] initWithObjects:@"first",@"second",@"third",nil];
NSString *docDir3 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *pngFilePath4 = [NSString stringWithFormat:@"%@/foto2.jpg",paths];
[data writeToFile:pngFilePath4 atomically:YES];
NSData * fotoData = [[NSData alloc] initWithContentsOfFile:pngFilePath4];
NSFileManager *manager = [[NSFileManager alloc] init];
[manager removeItemAtPath:pngFilePath4 error:nil];
ZipFile *readFile = [[ZipFile alloc] initWithFileName:path mode:ZipFileModeCreate];
ZipWriteStream *stream = [readFile writeFileInZipWithName:@"foto2.jpg" compressionLevel:ZipCompressionLevelNone];
[stream writeData:fotoData];
[stream finishedWriting];
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate=self;
[picker addAttachmentData:"NSData Object" mimeType:@"application/zip" fileName:@"test.zip"];
Class mailclass = (NSClassFromString(@"MFMailComposeViewController"));
if([mailclass canSendMail]){
[self presentModalViewController:picker animated:YES];
}
[readFile close];
[data2 release];
[fotoData release];
}
私はreadFileのオブジェクトから別のNSDataオブジェクトを作成し、[ピッカーattachmentData:メソッド]内にこれを配置する必要があると思います。誰かが正しい方向に私を指すことができることを願っています。
EDIT
はまだこれが正常に動作させることはできません。 zipファイルを送信するのは本当に時間がかかります(Wi-Fi経由でも)。 zipイメージを開くと、ファイルを開くことができないというエラーが表示されます。ここに私のコードです:
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"test.zip"];
NSArray *data = [[NSArray alloc] initWithObjects:@"first",@"second", nil];
NSString *docDir3 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *pngFilePath3 = [NSString stringWithFormat:@"%@/foto2.jpeg",docDir3];
NSData * imageData2 = [[[NSData alloc] initWithContentsOfFile:pngFilePath3] autorelease];
[data writeToFile:pngFilePath3 atomically:YES];
ZipFile *readFile = [[ZipFile alloc] initWithFileName:path mode:ZipFileModeCreate];
ZipWriteStream *stream = [readFile writeFileInZipWithName:@"foto2.jpeg" compressionLevel:ZipCompressionLevelNone];
[stream writeData:imageData2];
[stream finishedWriting];
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate=self;
[picker addAttachmentData:[NSData dataWithContentsOfFile:path] mimeType:@"application/zip" fileName:@"test.zip"];
Class mailclass = (NSClassFromString(@"MFMailComposeViewController"));
if([mailclass canSendMail]){
[self presentModalViewController:picker animated:YES];
}
[data release];
[readFile close];
私を助けるために事前に感謝!
ありがとう、しかし、私はまだそれを動作させることができません。私は上記の私の答えを編集します。 – BarryK88