我正在使用Angular。当我发送带有电子邮件附件的邮件时,响应是我收到了文件的数据代码,而不是其实际文件格式。 像这样:
我不知道出了什么问题。
这是代码: html:
<div class="uploadfile">
<input fileread="formData.attached" (change)="onFileSelected" type="file" id="real-file" hidden="hidden" />
<button type="button" id="custom-button">Upload CV</button>
<span id="custom-text">No file chosen, yet.</span>
</div>
<!--Script upload -->
<script>
const realFileBtn = document.getElementById("real-file");
const customBtn = document.getElementById("custom-button");
const customTxt = document.getElementById("custom-text");
customBtn.addEventListener("click", function() {
realFileBtn.click();
});
realFileBtn.addEventListener("change", function() {
if (realFileBtn.value) {
customTxt.innerHTML = realFileBtn.value.match(
/[\/\\]([\w\d\s\.\-\(\)]+)$/
)[1];
} else {
customTxt.innerHTML = "No file chosen, yet.";
}
});
</script>
<!--End of Script upload -->
app.js:
myApp.directive("fileread", [function () {
return {
scope: {
fileread: "="
},
link: function (scope, element, attributes) {
element.bind("change", function (changeEvent) {
var reader = new FileReader();
reader.onload = function (loadEvent) {
scope.$apply(function () {
scope.fileread = loadEvent.target.result;
});
}
reader.readAsDataURL(changeEvent.target.files[0]);
});
}
}
}]);
希望您能提供帮助。 预先感谢。
答案 0 :(得分:0)
在您附加的图像中,我看到该文件实际上是基于64的字符串。所以问题出在您的角度代码上。
reader.readAsDataURL(changeEvent.target.files[0]);
readAsDataURL将返回base64编码的字符串。您可以在此处FileReader.readAsDataURL()
检查链接因此,您仅在电子邮件中收到字符串,但未收到实际文件。因此,您应该指定文件名和编码= base64。
我不确定您所使用的后端技术。您可以在此处查看示例nodeJs代码。
const mailOptions = {
...
attachments: [
{ // encoded string as an attachment
filename: yourFileName,
content: fileString,
encoding: 'base64'
}
]
};