所有
我已经在我的简单项目上呆了一段时间了。我创建了一个网络应用程序代码,允许其他人将他们的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();
}
- 在
<input>
中使用accept
<input type="file" accept=".pdf"/>
- 为扩展添加服务器端验证
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();
}