Javascript 谷歌应用程序脚本气体-如何获得<;输入类型=";文件"&燃气轮机;从表格
我正在做一个小项目,我在一个网站上有一个html表单,我想使用谷歌应用程序脚本(GAS)获取所有表单输入数据,并将其发送到电子邮件地址 到目前为止,我的代码运行得很好;但是,我在从html页面上的中获取文件时遇到问题 这是我在GAS上使用的代码Javascript 谷歌应用程序脚本气体-如何获得<;输入类型=";文件"&燃气轮机;从表格,javascript,html,google-apps-script,form-submit,Javascript,Html,Google Apps Script,Form Submit,我正在做一个小项目,我在一个网站上有一个html表单,我想使用谷歌应用程序脚本(GAS)获取所有表单输入数据,并将其发送到电子邮件地址 到目前为止,我的代码运行得很好;但是,我在从html页面上的中获取文件时遇到问题 这是我在GAS上使用的代码 function doPost(request) { var fname = request.parameters.txtName, femail = request.parameters.txtEmail, fnote = request.para
function doPost(request) {
var fname = request.parameters.txtName, femail = request.parameters.txtEmail, fnote = request.parameters.txtArea, ffile = request.parameters.fFileAttach;
MailApp.sendEmail({
to: "me@EmailAddress.com",
subject: "Message from webform by: " + femail,
htmlBody: "This message was sent by the user " + fname + "<br/>" +
"User email address: " + femail + "<br />" +
"Email message:<br/>" + fnote,
replyTo: femail,
attachments: [ffile]
});
}
函数doPost(请求){
var fname=request.parameters.txtName,femail=request.parameters.txtmail,fnote=request.parameters.txtArea,ffile=request.parameters.fFileAttach;
MailApp.sendmail({
至:me@EmailAddress.com",
主题:“来自网络表单的信息:”+femail,
htmlBody:“此消息由用户“+fname+”
发送+
用户电子邮件地址:“+femail+”
”+
“电子邮件:
”+fnote,
答复:女邮件,,
附件:[ffile]
});
}
这是我的html表单代码:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<form action="myGAS_Link" id="cc-form" method="post">
<div class="fTop">
<span>Name:* </span><input name="txtName" type="text" placeholder="Your Name" id="fname" required="" autofocus>
<span>E-Mail:* </span><input name="txtEmail" type="email" placeholder="Your e-Mail" id="femail" required="">
</div>
<!--------------------------->
<div class="fSet1">
<span>Notes:</span><br/>
<textarea name="txtArea" id="fTextArea" rows="8"></textarea>
</div>
<!--------------------------->
<div class="fSub">
<span>Upload your File:* </span><input name="fFileAttach" id="fFileAttach" type="file" required>
<input id="submit" type="submit">
</div>
</form>
</body>
</html>
姓名:*
电子邮件:*
注:
上传您的文件:*
这次修改怎么样
修改点:
关于HTML
FileReader()
,检索base64编码的文件、文件名和mimetypetype=“hidden”
的input
添加到#cc form
作为文本数据<代码>替换(/^.*,/,'')用于删除编码数据的标头<代码>匹配(/^.*(=;)/)[0]用于检索上载文件的mimetyperequest.parameters.data
、request.parameters.filename
和request.parameters.mimetype
的形式检索数据、文件名和mimetype实用程序.base64Decode()
对数据进行解码实用程序.newBlob()创建blob
函数doPost(请求){
var data=Utilities.base64Decode(request.parameters.data);//添加
var ffile=Utilities.newBlob(数据,request.parameters.mimetype,request.parameters.filename);//添加
var fname=request.parameters.txtName,femail=request.parameters.txtmail,fnote=request.parameters.txtArea;//修改
MailApp.sendmail({
至:me@EmailAddress.com",
主题:“来自网络表单的信息:”+femail,
htmlBody:“此消息由用户“+fname+”
发送+
用户电子邮件地址:“+femail+”
”+
“电子邮件:
”+fnote,
答复:女邮件,,
附件:[ffile]
});
return ContentService.createTextOutput(“确定”);//已添加
}
修改的HTML:(更新)
姓名:*
电子邮件:*
注:
上传您的文件:*
$('#fFileAttach')。关于(“更改”,函数(){
var file=this.files[0];
var fr=new FileReader();
fr.fileName=file.name;
fr.onload=功能(e){
html='';
html+='';
html+='';
$(“#数据”).empty().append(html);//修改
}
fr.readAsDataURL(文件);
});
注:
- 为了使用此功能,在修改脚本后,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中
- 此示例脚本可以上载一个文件。如果要上载多个文件,请修改脚本
var file=this.files[0]代码>表示选定的第一个文件。当有一些文件时,它是
文件[1],文件[2]…
- 您的附加问题已反映到示例脚本中。
- 添加了
- 修改自
到$(“#cc form”).append(html)
$(“#数据”).empty().append(html)代码>
- 添加了
通过这些修改,将上载最后选择的文件。此修改如何 修改点: 关于HTML
FileReader()
,检索base64编码的文件、文件名和mimetypetype=“hidden”
的input
添加到#cc form
作为文本数据<代码>替换(/^.*,/,'')用于删除编码数据的标头<代码>匹配(/^.*(=;)/)[0]用于检索上载文件的mimetyperequest.parameters.data
、request.parameters.filename
和request.parameters.mimetype
的形式检索数据、文件名和mimetype实用程序.base64Decode()
对数据进行解码实用程序.newBlob()创建blob
函数doPost(请求){
var data=Utilities.base64Decode(request.parameters.data);//添加
var ffile=Utilities.newBlob(数据,request.parameters.mimetype,request.parameters.filename);//添加
var fname=request.parameters.txtName,femail=request.parameters.txtmail,fnote=request.parameters.txtArea;//修改
MailApp.sendmail({
至:me@EmailAddress.com",
主题:“来自网络表单的信息:”+femail,
htmlBody:“此消息由用户“+fname+”
发送+
用户电子邮件地址:“+femail+”
”+
“电子邮件:
”+fnote,
答复:女邮件,,
附件:[ffile]
});
return ContentService.createTextOutput(“确定”);//已添加
}
修改的HTML:(更新)
姓名:*
电子邮件:*
注:
上传您的文件:*
$('#fFileAttach')。关于(“更改”,函数(){
var file=this.files[0];
var fr=new FileReader();
fr.fileName=file.name;
fr.onload=功能(e){
html='';
html+='';
function doPost(request) {
var data = Utilities.base64Decode(request.parameters.data); // Added
var ffile = Utilities.newBlob(data, request.parameters.mimetype, request.parameters.filename); // Added
var fname = request.parameters.txtName, femail = request.parameters.txtEmail, fnote = request.parameters.txtArea; // Modified
MailApp.sendEmail({
to: "me@EmailAddress.com",
subject: "Message from webform by: " + femail,
htmlBody: "This message was sent by the user " + fname + "<br/>" +
"User email address: " + femail + "<br />" +
"Email message:<br/>" + fnote,
replyTo: femail,
attachments: [ffile]
});
return ContentService.createTextOutput("ok"); // Added
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.js"></script> <!-- Added -->
</head>
<body>
<form action="myGAS_Link" id="cc-form" method="post">
<div class="fTop">
<span>Name:* </span><input name="txtName" type="text" placeholder="Your Name" id="fname" required="" autofocus>
<span>E-Mail:* </span><input name="txtEmail" type="email" placeholder="Your e-Mail" id="femail" required="">
</div>
<!--------------------------->
<div class="fSet1">
<span>Notes:</span><br/>
<textarea name="txtArea" id="fTextArea" rows="8"></textarea>
</div>
<!--------------------------->
<div id="data"></div> <!-- Added -->
<div class="fSub">
<span>Upload your File:* </span><input name="fFileAttach" id="fFileAttach" type="file" required>
<input id="submit" type="submit">
</div>
</form>
</body>
<!-- Added -->
<script>
$('#fFileAttach').on("change", function() {
var file = this.files[0];
var fr = new FileReader();
fr.fileName = file.name;
fr.onload = function(e) {
html = '<input type="hidden" name="data" value="'+e.target.result.replace(/^.*,/, '')+'" >';
html += '<input type="hidden" name="filename" value="'+e.target.fileName+'" >';
html += '<input type="hidden" name="mimetype" value="' + e.target.result.match(/^.*(?=;)/)[0] + '" >';
$("#data").empty().append(html); // Modified
}
fr.readAsDataURL(file);
});
</script>
</html>