Reputation: 197
I am trying to modify the below to code so the all files in the var fileBlob = e.parameter['file'+i];
are uploaded into the new sub-folder that is created.
After submitting the upload, a new folder is created for each file uploaded and each file is uploaded to each folder.
How can I get the doPost to submit the upload files to the new sub-folder only. So if I upload 20 files, 20 files are added/uploaded to the one sub-folder only.
Multi File Upload Ui Form
Google Drive Results
Code
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);
}
Full Code here (Created by Serge insas)
Upvotes: 0
Views: 3153
Reputation: 46802
As mentioned in the other answer, the folder creation should happen just once before the loop but instead of adding the new file to the folder (and keeping it in the root folder as well unless you remove it) I would suggest to use the createFile method from the folder class instead.
The code becomes simpler :
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
}
}
Upvotes: 3
Reputation: 503
I think your problem here is that you call .createFolder for each file. Try putting
var newFolder = DocsList.getFolderById("0Bw8NytPhOo00b0xIVm41LWlZRlk").createFolder(foldername);
outside of the for loop.
Upvotes: 1