我正在尝试修改下面的代码,以便将var fileBlob = e.parameter['file'+i];
中的所有文件上传到创建的新子文件夹中。
提交上传后,将为上传的每个文件创建一个新文件夹,并将每个文件上传到每个文件夹。
如何让doPost仅将上传文件提交到新的子文件夹。因此,如果我上传了20个文件,则只会将20个文件添加/上传到一个子文件夹中。
多文件上传Ui表格
Google云端硬盘结果
代码
function doPost(e) {
var foldername = e.parameter.folderName;
Logger.log('foldername = '+foldername);
var numFiles = Number(e.parameter.hidden);
Logger.log('numFiles = '+numFiles);
for (var i = 1; i<=numFiles; i++){
Logger.log(i);
var fileBlob = e.parameter['file'+i];
Logger.log(fileBlob);
var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
newFolder.getUrl();
Logger.log(newFolder.getUrl());
var newFile = DocsList.createFile(fileBlob);
newFile.addToFolder(newFolder);
}
完整代码 here(由Serge insas创建)
答案 0 :(得分:3)
正如在另一个答案中所提到的,文件夹创建应该只在循环之前发生一次,而不是将新文件添加到文件夹中(并将其保留在根文件夹中,除非你将其删除)我建议使用相反,createFile method from the folder class。
代码变得更简单:
function doPost(e) {
var foldername = e.parameter.folderName;
Logger.log('foldername = '+foldername);
var numFiles = Number(e.parameter.hidden);
Logger.log('numFiles = '+numFiles);
var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
for (var i = 1; i<=numFiles; i++){
Logger.log(i);
var fileBlob = e.parameter['file'+i];
var newFile = newFolder.createFile(fileBlob);// create the file directly in the new folder
}
}
答案 1 :(得分:1)
我认为你的问题是你为每个文件调用.createFolder。试试
var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
在for循环之外。