如何使用Javascript/谷歌应用程序脚本验证文件上传字段



所有

我已经在我的简单项目上呆了一段时间了。我创建了一个网络应用程序代码,允许其他人将他们的pdf文件上传到我的谷歌文件夹,但问题是我不知道谁来设置特定的文件扩展名,所以其他人不上传唯一接受的扩展名";pdf";。在我的代码中,有一个函数本应阻止除pdf之外的任何类型的扩展,但它不起作用。

<form>
<input type="file" name="myFile" accept= "checkfile(sender);" id='file' >
<br>
<br>
<input type="button" id="submitBtn" value="Upload Files">
<label id="resp"></label>
</form>
<script>
document.getElementById('submitBtn').addEventListener('click',
function(e){
google.script.run.withSuccessHandler(onSuccess).uploadFiles(this.parentNode)
})

function onSuccess(data){
document.getElementById('resp').innerHTML = "File Uploaded to the path " +data;


function checkfile(sender) {

var element=  document.getElementById('file')
if ( sender !== '.pdf') {

return sender.preventDefault(); 
} else {

return true; 
}
}
}

</script>

代码.gs

function doGet() {
var html = HtmlService.createHtmlOutputFromFile('form');
return html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

function uploadFiles(data)
{
var file = data.myFile;
var folder = DriveApp.getFolderById('...........');
var createFile = folder.createFile(file);
return createFile.getUrl();
}
  1. <input>中使用accept<input type="file" accept=".pdf"/>
  2. 为扩展添加服务器端验证
function uploadFiles(filename, data) {
if (!!filename.match('^.*.(pdf|PDF)$')) return false; // or throw error
}

看起来您正试图将文件名与"匹配;。pdf"-您可以尝试使用regex只匹配文件的末尾。

const regex = "^.+.pdf$"
if (!sender.match(regex)) {
return sender.preventDefault();
}

最新更新