Javascript 如何使用一个输入字段通过Html表单对象上载多个文件
我创建了一个带有文件输入字段和多属性激活的Html表单Javascript 如何使用一个输入字段通过Html表单对象上载多个文件,javascript,html,dom,google-apps-script,Javascript,Html,Dom,Google Apps Script,我创建了一个带有文件输入字段和多属性激活的Html表单 <input type="file" name="documents" multiple size="11"> 输出结果是,如果总文件上载量为3,则我只获得三次上载的第一个文件。 表示仅上载提交表单时选择的第一个文件 我想将所有选定的文件上载到同一文件夹中的驱动器 提前感谢您正在执行这3次google.script.run.withSuccessHandler(update).uploadFile(formObject)所以您
<input type="file" name="documents" multiple size="11">
输出结果是,如果总文件上载量为3,则我只获得三次上载的第一个文件。
表示仅上载提交表单时选择的第一个文件
我想将所有选定的文件上载到同一文件夹中的驱动器
提前感谢您正在执行这3次
google.script.run.withSuccessHandler(update).uploadFile(formObject)代码>所以您可能需要传入其他内容.files
具有文件对象,您可能可以传入这些对象。通过将它们分配给另一个输入的.value
,您似乎将它们视为字符串。。那不可能是对的。尝试google.script.run.withSuccessHandler(update).uploadFile(docs.files[i])代码>我已经删除了那个价值线,因为它只是一个点击和尝试,但我得到了与您所说的相同的结果。而且,我试着按照您所说的方式调用该方法,但谷歌文档说明了一切。我们不能传递除Number、Boolean、string、null或form对象以外的参数(如果它是函数的唯一参数)。我认为这可能会有所帮助:使用文件读取器读取文件并传递该文件。这使用了uploadfiletogologledrive
,但我认为它类似于uploadFile
。是的,这种方法也只能上传一个文件,因为我们只能通过一个html表单将一个读卡器对象发送到app script web app。我可以问一下您想要上传的文件的大小吗?因为,如果一个文件超过50MB,则需要使用可恢复上载。如果要一次上载的多个文件的总大小小于50MB,则可以立即将它们发送到GAS端,而无需使用for循环。
<script>
function handleFormSubmit(formObject) {
var div = document.getElementById('output');
var docs = document.getElementById('myFile');
var firstName = document.getElementById('first').value;
var lastName = document.getElementById('last').value;
var hid = document.getElementById("hidden");
for(i=0;i< docs.files.length ; i++){
div.innerHTML = hid+hid.file+"<h3>Please do not refresh or close the page. Your files are uploading...</h3>";
google.script.run.withSuccessHandler(update).uploadFile(formObject);
docs
}
</script>
function uploadFile(formObject) {
Logger.log("called");
var firstName=formObject.firstName;
var lastName=formObject.lastName;
var file = formObject.documents;
Logger.log(file);
var root = DriveApp.getRootFolder();
var folder,url;
if(root.getFoldersByName("Application Documents - Clients").hasNext()){
folder = root.getFoldersByName("Application Documents - Clients").next();
} else{
folder = root.createFolder("Application Documents - Clients");
}
if(folder.getFoldersByName(firstName+" "+lastName).hasNext()){
url = folder.getFoldersByName(firstName+" "+lastName).next().createFile(file).getUrl();
} else {
url = folder.createFolder(firstName+" "+lastName).createFile(file).getUrl();
}
return url;
}