我有工作的电子邮件发件人,但没有附件。我试过这样的事情:
HTML中的简单输入:
<input type="file" simple-change="uploadFiles($event)"/>
JS文件选择器:
$scope.uploadFiles = function (event) {
$scope.file= event.target.files[0];
};
和JS电子邮件发件人:
$scope.sendEmail = function(){
$scope.emailData = new EmailData();
$scope.emailData.to = "example@gmail.com";
$scope.emailData.from = "boss@gmail.com";
$scope.emailData.subject = "Errors";
$scope.emailData.title = $scope.topic;
$scope.emailData.description = $scope.description;
$scope.emailData.template = "templateErrors";
$http.post("sendemail/attachment", $scope.emailData, $scope.file, {headers: {'Content-Type': undefined} })
.then(function (response) {
$scope.succes = true;
},
function(fail) {
$scope.error = true;
});
}
Java控制器:
@RequestMapping(value = "/attachment", method = RequestMethod.POST)
public EmailStatus sendEmailAttach(@RequestBody EmailData emailData, CommonsMultipartFile file) {
return emailSenderAttachment.sendDataAttach(emailData, file);
}
但仍然出现错误500:“”message“:”org / apache / commons / fileupload / FileUploadException“”
请帮助:(
答案 0 :(得分:1)
尝试以下代码使用$upload.upload
代替$http.post
将文件上传到服务器。
<强> AngularJs 强>
$upload.upload({
method : 'POST',
url : 'sendemail/attachment',
file : $scope.file,
data : $scope.emailData
}).success(function(response) {
console.log("Success");
}).error(function(error) {
console.log("Error");
});
Spring Controller
@RequestMapping(value = "/attachment", method = RequestMethod.POST)
public EmailStatus sendEmailAttach(@RequestParam("file") MultipartFile file, EmailData emailData) {
return emailSenderAttachment.sendDataAttach(emailData, file);
}
有关详细信息,请参阅此帖Multipart File Upload using AngularJS and SpringMVC
中的回答