Пустые файлы PDF при использовании Google API - PullRequest
0 голосов
/ 24 марта 2020

Я использую скрипт Google App, чтобы пользователи могли загружать файлы PDF в одну из папок на моем диске Google. На первый взгляд кажется, что все работает отлично, но когда я go в папку, чтобы проверить полученные файлы PDF, я получаю только чистый PDF!

Кто-нибудь уже сталкивался с этой проблемой? Если да, не могли бы вы мне помочь, пожалуйста?

Вот мои 2 сценария:

server.gs:

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');

}

function uploadFiles(form) {

  try {

    var dropbox = "Travaux_T°S";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }

    var blob = form.myFile;    
    var file = folder.createFile(blob);    
    file.setDescription("Uploaded by " + form.myName);

    return "Et hop: une copie de plus à corriger ! :)" ;

  } catch (error) {

    return error.toString();
  }

}

форма. html:

image

Большое спасибо заранее! :)

1 Ответ

1 голос
/ 24 марта 2020

Загрузка с this.parentNode не всегда хорошо работает для всех типов файлов.

Вместо этого, элегантная и надежная процедура загрузки с Filereader .

Образец

Код.gs:

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');

}

function uploadFiles(blob, name, description) {

  try {

    var dropbox = "Travaux_T°S";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }

    var blob = blob.split(",")
    var blob = Utilities.newBlob(Utilities.base64Decode(blob[1]), 'application/pdf');
    console.log(blob);
    var fileName = blob.setName(name).getName(); 
    var file = folder.createFile(blob); 
    file.setDescription("Uploaded by " + description);    
    return "Et hop: une copie de plus à corriger ! :)" ;

  } catch (error) {

    return error.toString();
  } 
}

Форма. html:

image
...