java.io.FileNotFoundException :(系统找不到指定的文件)使用multipart时

时间:2017-11-18 12:31:52

标签: java spring spring-boot multipart

    package com.act.webmail.service;

    import javax.mail.internet.MimeMessage;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.io.ByteArrayResource;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.stereotype.Service;
    import org.springframework.web.multipart.MultipartFile;

    import com.act.webmail.dto.MessageToSend;

    @Service
    public class ActMailSenderService {

        @Autowired
        private JavaMailSender javaMailSender;

        @Async
        public void sendEmail(MessageToSend messageToSend, MultipartFile... multipartFileList) {

            try {
                MimeMessage mimeMessage = javaMailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
                if (messageToSend.getReplyTo() != null && !messageToSend.getReplyTo().equals("")){
                    mimeMessage.addHeader("In-Reply-To", messageToSend.getReplyTo());
                }
                helper.setFrom("jackson.baby@xxxx.in");
                helper.setTo(messageToSend.getTo());
                helper.setSubject(messageToSend.getSubject());
                helper.setText(messageToSend.getBody(), true);
                for (MultipartFile multipartFile : multipartFileList) {
                    byte[] multipartFileByteArray= multipartFile.getBytes();
                    helper.addAttachment(multipartFile.getOriginalFilename(), new ByteArrayResource(multipartFileByteArray));   
                }
                javaMailSender.send(mimeMessage);
                System.out.println(messageToSend.getReplyTo() + " sent successfully!");
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    }

我初始化了新的ByteArrayResource(multipartFile.getBytes())并在org.springframework.mail.javamail.MimeMessageHelper的addAttachment函数中使用,但是我得到了异常"java.io.FileNotFoundException: C:\Users\Jackson Baby\AppData\Local\Temp\tomcat.8088819519816892725.8080\work\Tomcat\localhost\ROOT\upload_525fd01b_db90_4589_921f_50bf9a1e6e47_00000001.tmp (The system cannot find the file specified)"

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我有一个同样的问题,当我试图获取文件的字节或输入流时,我将收到“找不到文件异常”。 我终于通过从“休息控制器”方法中删除@Async批注来解决了该问题。 这似乎是造成问题的原因...