Google Script中的多重上传

时间:2017-06-12 18:20:36

标签: html arrays google-apps-script

我需要一些帮助。我不是程序员。

我正在寻找一个用于多次上传的Google脚本。我在网上找到了这个免费的共享脚本:https://script.google.com/d/1x3p9ZAv-SafEK06r_Vr7fVuUNtEfBg1SGhmSYWjQ0kuPTk-y55a7Nink/edit?usp=sharing

我不知道如何编辑它。我真的不是程序员。 我想让2'选择文件'一次上传。

这是原始表格

<form id="myForm" align="center">
            <input type="text" name="myName" placeholder="Your name..">
            <input type="file" name="myFile">
            <input type="submit" value="Upload File" 
           onclick="this.value='Uploading..';
                    google.script.run.withSuccessHandler(fileUploaded)
                    .uploadFiles(this.parentNode);
                    return false;">
          </form>

我想要的是什么,

<form id="myForm" align="center">
            <input type="text" name="myName" placeholder="Your name..">
            <input type="file" name="myFile">
            <input type="file" name="myFile">  <--THIS IS MY NEED, Pls don't laugh
            <input type="submit" value="Upload File" 
           onclick="this.value='Uploading..';
                    google.script.run.withSuccessHandler(fileUploaded)
                    .uploadFiles(this.parentNode);
                    return false;">
          </form>

提前致谢。 干杯 Wan Heri

2 个答案:

答案 0 :(得分:1)

我想出了一个解决此问题的方法。使用Google Drive V3 Api,您可以通过几种不同的方式上传文件。接受的答案直接使用api上传blob。根据我的实验,看来此方法仅支持50MB文件。上传较大的文件需要使用可恢复的上传方法。

我创建了一个示例表单,该表单可以创建文件夹,上传大文件并按顺序上传这些文件。我在这里创建了一个git hub:https://github.com/CharlesPlucker/drive-multi-upload/

主要要点包括几个不同的部分。最简单的是,您需要输入具有multiple属性。您将要遍历该输入的文件。像这样:

var files = [...$('#files')[0].files]; // convert from FileList to array
files.forEach(file => { uploadfile(file); });

答案 1 :(得分:0)

根据此thread,您现在必须使用work around来处理多个文件。 multiple属性仅在IFRAME模式下工作,但文件输入在IFRAME模式下断开。

这是一个用于多文件上传的示例代码。限制是文件必须小于10 MB。

function doGet() {
 return HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.IFRAME);

}

function saveFile(data,name,folderId) {

var contentType = data.substring(5,data.indexOf(';'));
var file = Utilities.newBlob(Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)), contentType, name);
  DriveApp.getFolderById(folderId).createFile(file);

}

其他参考资料: