发送带附件的邮件 - angularJS + Java Spring

时间:2017-12-21 15:36:40

标签: java angularjs spring email

我有工作的电子邮件发件人,但没有附件。我试过这样的事情:

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“”

请帮助:(

1 个答案:

答案 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

中的回答