gpt4 book ai didi

javascript - 无法解码字符串。 (第 2 行,文件 "Code",项目 "PROJECT NAME")

转载 作者:行者123 更新时间:2023-12-03 00:32:34 25 4
gpt4 key购买 nike

我一直在尝试创建一个 HTML 表单,将文件上传到 Google 云端硬盘。

这是我在谷歌应用程序脚本中使用的代码:

function doPost(e) {
var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
DriveApp.createFile(blob);
return ContentService.createTextOutput("Done.")
}

这是我的 HTML 表单的样子:

<form action="https://script.google.com/macros/s/AKfycbx48QW8vH7C0cse4W60VJIXba4MVkUxiuUTaJPZ1_MWwUrODMmp/exec" id="form" method="post">
<input type="text" placeholder="Name" class="form-control"><br>
<input type="email" placeholder="Email" class="form-control"><Br>
<div id="data"></div>
<input name="file" id="uploadfile" type="file" class="form-control">
<br><Br>
<button id="submit" type="submit" class="btn btn-primary form-control">Send</button>
</form>
<script>
$('#uploadfile').on("change", function () {
var file = this.files[0];
var fr = new FileReader();
fr.fileName = file.name
fr.onload = function (e) {
e.target.result
html = '<input type="hidden" name="data" value="' + e.target.result.replace(/^.*,/, '') + '" >';
html += '<input type="hidden" name="mimetype" value="' + e.target.result.match(/^.*(?=;)/)[0] + '" >';
html += '<input type="hidden" name="filename" value="' + e.target.fileName + '" >';
$("#data").empty().append(html);
}
fr.readAsDataURL(file);
});
</script>

使用的网址https://script.google.com/macros/s/AKfycbx48QW8vH7C0cse4W60VJIXba4MVkUxiuUTaJPZ1_MWwUrODMmp/exec是我将脚本部署为网络应用后获得的网址。

现在,当我尝试上传 .txt 文件时,出现错误无法解码字符串。 (第 2 行,文件“代码”,项目“项目名称”)

更新:

根据@TheMaster评论,我发现我不需要解码部分..所以我将谷歌脚本更改为:

function doPost(e) {
var blob = Utilities.newBlob(e.parameters.data, e.parameters.mimetype, e.parameters.filename);
DriveApp.createFile(blob);
return ContentService.createTextOutput("Done.")
}

但它给了我错误参数无效(第3行,文件“Code”,项目“PROJECT NAME”)

最佳答案

欢迎您来到这里:

HTML:

<!DOCTYPE html>
<html>
<head>
<script>

function fileUploadJs(frmData)
{
document.getElementById('status').style.display ='inline';
google.script.run
.withSuccessHandler(updateOutput)
.processForm(frmData)
};
function updateOutput(info)
{
var br='<br />';
var outputDiv = document.getElementById('status');
outputDiv.innerHTML = br + 'File Upload Successful.' + br + 'File Name: ' + info.name + br + 'Content Type: ' + info.type;
}
</script>
</head>
<body>
<h1 id="main-heading">Main Heading</h1>
<div id="formDiv">
<form id="myForm">
<input name="fileToLoad" type="file" /><br/>
<input type="button" value="Submit" onclick="fileUploadJs(this.parentNode)" />
</form>
</div>
<div id="status" style="display: none">
<!-- div will be filled with innerHTML after form submission. -->
Uploading. Please wait...
</div>
<div id="controls">
<input type="button" value="Close" onClick="google.script.host.close();" />
</div>
</body>
</html>

GS:

function processForm(theForm) {
var fileBlob = theForm.fileToLoad;
Logger.log("fileBlob Name: " + fileBlob.getName())
Logger.log("fileBlob type: " + fileBlob.getContentType())
Logger.log('fileBlob: ' + fileBlob);
var fileInfo={'name':fileBlob.getName(),'type':fileBlob.getContentType(), 'size':fileBlob.getBytes()};

var fldrSssn = DriveApp.getFolderById('FolderId');//put in fetched files
fldrSssn.createFile(fileBlob);
return fileInfo;
}

我只是将它用作对话框,因此您必须添加 doGet();

关于javascript - 无法解码字符串。 (第 2 行,文件 "Code",项目 "PROJECT NAME"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53794068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com