2017-05-26 3 views
0
java.lang.IllegalStateException

:ファイルが移動された -java.lang.IllegalStateException:ファイルが移動された - JavaMailを使用したSpring MVCのアップロードMulipartファイルで再び読み込むことができません

I再び読み込むことができませんこの例外を受け取り、メールはjavamailを使って送信していません。添付ファイルが1つだけの場合はうまく動作し、複数のファイルがアップロードされている場合は動作しません。

public class SomeClass { 

    @Override 
    public void sendMail(EmailReportsVO report) throws Exception { 
     taskExecutor.execute(new Runnable() { 
      public void run() { 
       try { 

        List<String> absolutePaths=new ArrayList<String>(); 
        List<MultipartFile> file = report.getFile(); 
        System.err.println("file size::"+report.getFile()+ " :: size is ::"+file.size()); 
        if(file.size()>0){ 
         for (MultipartFile mFile : file) { 
          if(mFile.getSize()>0){ 
           Thread.sleep(mFile.getSize()+1000); 
           File fileData = convert(mFile); 
           String absolutePath = fileData.getAbsolutePath(); 
           absolutePaths.add(absolutePath); 

          } 
         } 
        } 
        sendMailSimple(report.getMessageBody(), report.getMailTo(), report.getSubject(), absolutePaths); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public File convert(MultipartFile multipart) throws IllegalStateException, IOException, InterruptedException { 
     File convFile = new File(multipart.getOriginalFilename()); 
     multipart.transferTo(convFile); 
     return convFile; 
    } 

    private void sendMailSimple(String text, String to, String subject, List<String> filePaths) throws Exception { 
     MimeMessage message = mailSender.createMimeMessage(); 
     try { 
      MimeMessageHelper helper = new MimeMessageHelper(message, true); 
      helper.setFrom("[email protected]"); 
      helper.setTo(to); 
      helper.setSubject(subject); 
      helper.setText(text); 

      if(filePaths.size()>0){ 
       FileSystemResource file =null; 
       for (String filePath : filePaths) { 
        System.err.println("Hello path:: "+filePath); 
        file =new FileSystemResource(filePath); 
helper.addAttachment(file.getFilename(), file); 
       } 


      } 
     } catch (MessagingException e) { 
      throw new MailParseException(e); 
     } 
     mailSender.send(message); 

    } 
} 

答えて

0

あなたはforループ内helper.addAttachment通話をしたくないですか?

ファイル名に他のエラーがあり、ファイルが削除されたときに、あなたが提供した情報からわからないことがあります。

+0

私はhelper.addAttachmentをside forループに入れても、同じ問題が発生します。 –

+0

メッセージを送信する前にファイルを削除しているものはありませんか?それを証明するためにいくつかのコードを追加してください。 –

関連する問題