iOS:电子邮件附件中的文件名

时间:2013-10-31 10:18:19

标签: ios iphone email-attachments long-filenames

我可以从我的应用程序发送.csv文件作为附件,但是我想缩短该附件的名称文件,因为会有一堆csv文件传递给收件人。

一段代码:

...      
if (dorsalesPorTramoYcontrol && dorsalesPorTramoYcontrol.count )
                {
                    NSMutableString *mainString = [[ NSMutableString alloc]initWithString:@"dorsal,paso,tiempo\n"];

                    for (NSManagedObject *get in dorsalesPorTramoYcontrol) {

                         //dorsales
                        NSString *string =[get valueForKey:@"dorsal"];
                        [mainString appendFormat:@"%@,",string];

                        //paso
                        string = [get valueForKey:@"paso"];
                        string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""];
                        [mainString appendFormat:@"%@,",string];

                        //tiempo
                        string = [get valueForKey:@"tiempo"];
                        string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"\"\""];
                        [mainString appendFormat:@"%@",string];

                                [mainString appendFormat:@"\n"];
                        }

                    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                    NSString *documentsDirectoryPath = [paths objectAtIndex:0];

file = [NSString stringWithFormat:@"%@/Tramo%@Control%@.csv", documentsDirectoryPath,section,control];

                    NSError *csVerror= NULL;
                    BOOL written = [mainString writeToFile:file atomically:YES encoding:NSUTF8StringEncoding error:&csVerror];
                    if (!written)  {
                        NSLog( @"Writing failed, error = %@",csVerror);
                    }else {
                        NSLog(@"Data saved! File path = %@",file);
                        [self composeEmail];
                    }
                }
    }

    -(void)composeEmail{

        if ([MFMailComposeViewController canSendMail])
        {

            MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
            mailer.mailComposeDelegate = self;
            [mailer setSubject:[NSString   stringWithFormat:@"Resultados Tramo: %@ - Control: %@", section, control]];
            NSArray *toRecipients = [NSArray arrayWithObjects:@"somebodymail@mail.com", nil];
            [mailer setToRecipients:toRecipients];

            // Logo
            UIImage *myImage = [UIImage imageNamed:@"logo.png"];
            NSData *imageData = UIImagePNGRepresentation(myImage);
            [mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"Icon"];


            [mailer addAttachmentData:[NSData dataWithContentsOfFile:file] mimeType:@"text/csv" fileName:file];
            NSString *emailBody =
            [NSString   stringWithFormat:@"Resultados Tramo: %@ - Control: %@ \nDorsal - Paso - Tiempo", section, control];
            [mailer setMessageBody:emailBody isHTML:NO];
            mailer.modalPresentationStyle = UIModalPresentationPageSheet;
            [self presentViewController:mailer animated:YES completion:nil];
        }
        else
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
                                                            message:@"Your device doesn't support the composer sheet"
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles: nil];
            [alert show];
        }
    }

文件名如下:

<_var_mobile_Applications_BE8CE610-A83E-4C79-8B9C-0263FA6881D6_Documents_Tramo2Control4.csv>

我希望它只是“Tramo2Control4.csv”

请你提供一些建议来获得它吗?

1 个答案:

答案 0 :(得分:0)

更改以下行:

[mailer addAttachmentData:[NSData dataWithContentsOfFile:file] mimeType:@"text/csv" fileName:file];

要:

NSString *fileName = [file lastPathComponent];
[mailer addAttachmentData:[NSData dataWithContentsOfFile:file] mimeType:@"text/csv" fileName:fileName];

您最初将文件名设置为整个文件路径。