我有一个HTML表单,它试图上传文件并将其保存在Google云端硬盘中。文件的实际数据在某处丢失,我无法弄清楚在哪里。我相信这是围绕文件的编码。文件名和文件类型移动得很好。
当前最终结果是保存在Google云端硬盘中的文件,其名称和文件类型正确,大小为8字节。
HTML
<form id="my-form">
<label for="file" class="input input-file">
<div class="button"><input type="file" name="file" id="file">Browse</div>
<input type="text" placeholder="Upload PDF or Word Document">
</label>
</form>
的Javascript
function UploadFile() {
var formData = new FormData();
var fileInput = document.getElementById('file');
var file = fileInput.files[0];
formData.append('file', file);
formData.append('type', file.type);
formData.append('name', file.name);
$.ajax({
url: 'GAS SCRIPT URL',
type: 'POST',
data: formData,
processData: false, // tell jQuery not to process the data
contentType: false, // tell jQuery not to set contentType
success: function(results) {
console.log(JSON.stringify(results));
},
error: function(results) {
console.log(JSON.stringify(results));
}
});
}
Google Apps脚本
function doPost(e) {
try {
var dropbox = "File Folder";
var folder, folders = DriveApp.getFoldersByName(dropbox);
var fileToProcess = e.parameters.file;
var fileToProcessName = e.parameters.name;
var fileToProcessType = e.parameters.type;
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
var blob = Utilities.newBlob(fileToProcess,fileToProcessType,fileToProcessName);
var newFile = folder.createFile(blob);
} catch (f) {
return ContentService // return json success results
.createTextOutput(
JSON.stringify({"result":"file upload failed",
"data": JSON.stringify(f) }))
.setMimeType(ContentService.MimeType.JSON);
}
}