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);
}
}
私はhelper.addAttachmentをside forループに入れても、同じ問題が発生します。 –
メッセージを送信する前にファイルを削除しているものはありませんか?それを証明するためにいくつかのコードを追加してください。 –