Javascript 谷歌应用程序脚本气体-如何获得<;输入类型=";文件"&燃气轮机;从表格

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

我正在做一个小项目,我在一个网站上有一个html表单,我想使用谷歌应用程序脚本(GAS)获取所有表单输入数据,并将其发送到电子邮件地址

到目前为止,我的代码运行得很好;但是,我在从html页面上的中获取文件时遇到问题

这是我在GAS上使用的代码

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编码的文件、文件名和mimetype
  • 将带有
    type=“hidden”
    input
    添加到
    #cc form
    作为文本数据<代码>替换(/^.*,/,'')用于删除编码数据的标头<代码>匹配(/^.*(=;)/)[0]用于检索上载文件的mimetype
  • 单击提交按钮时,base64数据将发送到GAS
  • 关于煤气
  • 分别以
    request.parameters.data
    request.parameters.filename
    request.parameters.mimetype
    的形式检索数据、文件名和mimetype
  • 使用
    实用程序.base64Decode()
    对数据进行解码
  • 使用
    实用程序.newBlob()创建blob
  • 将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编码的文件、文件名和mimetype
  • 将带有
    type=“hidden”
    input
    添加到
    #cc form
    作为文本数据<代码>替换(/^.*,/,'')
    用于删除编码数据的标头<代码>匹配(/^.*(=;)/)[0]
    用于检索上载文件的mimetype
  • 单击提交按钮时,base64数据将发送到GAS
  • 关于煤气
  • 分别以
    request.parameters.data
    request.parameters.filename
    request.parameters.mimetype
    的形式检索数据、文件名和mimetype
  • 使用
    实用程序.base64Decode()
    对数据进行解码
  • 使用
    实用程序.newBlob()创建blob
  • 将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>