我在互联网上找到了这段代码,我想使用它,但有一个错误。这是错误(在 Firefox 中测试)
未捕获的类型错误:FileReader.readAsBinaryString:参数 1 不是对象。
这个想法是从几个上传的文件创建一个 zip 文件并通过电子邮件发送。
<html>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://smtpjs.com/v3/smtp.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.js"></script>
<body>
<input type="file" id="fileupload" onchange="uploadFileToServer()" multiple />
</body>
<script>
function uploadFileToServer() {
var zip = new JSZip();
var numberOfFiles = event.srcElement.files.length;
var numberOfProcessedFiles = 0;
for (var i = 0; numberOfFiles; i++) {
(function (i) {
var file = event.srcElement.files[i];
var reader = new FileReader();
reader.readAsBinaryString(file);
reader.onload = function () {
numberOfProcessedFiles++;
zip.file(file.name, btoa(reader.result), { base64: true });
if (numberOfProcessedFiles == numberOfFiles) {
zip.generateAsync({ type: "base64" })
.then(function (content) {
var datauri = "data:application/x-zip-compressed;base64," + content;
Email.sendWithAttachment("YOUR@EMAIL.com",
"THEIR@EMAIL.com",
"This is the Subject ",
"This is the Body - see file.zip attachment!",
"****SMTP HOST****",
"****SMTP USERNAME****",
"****SMTP PASSWORD****",
datauri,
function done(message) {
alert("Message sent OK")
}
);
});
}
};
})(i);
}
}
</script>
</script>
</html>