将文件从网络上传到Google云端硬盘

时间:2019-09-23 16:50:49

标签: google-apps-script web-applications google-apps-script-web-application

我想使用Google API在网站上填写表单,用户在其中填写“姓名”,“电子邮件”和要上传的文件。我希望将文件上传到正在运行的Google云端硬盘中(正在运行)(遵循YT教程),但是我需要从表单中创建一个名为“名称” +“电子邮件”或名为“名称”的新文件夹,然后创建一个文件在此文件夹中,其内容为“电子邮件”

我尝试过此操作,但是我从未在.gs中做任何事情,所以我不知道如何从.html传递名称

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class MyFigureClass(QOpenGLWidget):
    def __init__(self, parent):
        super().__init__(parent)
        fmt = QSurfaceFormat()    # -╷
        fmt.setSamples(8)         #  > anti-aliasing
        self.setFormat(fmt)       # -╵
        [...]

    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        qp.setRenderHint(QPainter.Antialiasing)
        [...]
        qp.end()
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <title>Upload Files</title>
  </head>
  <body>
    <h1>Nezávazná poptávka!</h1>
    <form>
        <input type="text" class="box" name="name" placeholder="Celé jméno*">
        <br>
        <br>
        <input type="text" class="box" name="mail" placeholder="E-mail*">
        <br>
        <br>
        <input type="file" name="myFile" mulitple>
        <br>
        <br>
        <input type="button" id="submitBtn" value="Nahrát soubor">
        <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;
        }

    </script>
  </body>
</html>

1 个答案:

答案 0 :(得分:1)

您可以保持自己的index.html页不变,并通过对您进行一些小的修改code.gs来完成任务:

function uploadFiles(data){

  var file = data.myFile;
  var name = data.name;
  var mail = data.mail;  

  var folder = DriveApp.getFolderById('<your-folder-id>');
  folder.createFolder(name + " + " + mail);

  var createFile = folder.createFile(file);
  return createFile.getUrl();
}

或者,如果要将文件上传到新创建的文件夹,则可以通过替换最后三行来实现:

  folder.createFolder(name + " + " + mail);

  var createFile = folder.createFile(file);
  return createFile.getUrl();

具有:

  var folderID = folder.createFolder(name + " + " + mail).getId();

  var createFile = DriveApp.getFolderById(folderID).createFile(file);
  return createFile.getUrl();