使用ajax和google应用程序脚本将文件上传到Google云端硬盘会创建空文件

时间:2018-04-20 19:16:02

标签: javascript jquery ajax file-upload google-apps-script

我有一个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);
  }
}

0 个答案:

没有答案