GAS中的fileUpload具有相同的名称和扩展名

时间:2014-10-30 22:30:52

标签: google-apps-script

我希望你能帮助我,我有一个问题。 我需要一个GAS表单,可以使用原始名称将文件上传到谷歌驱动器。但是我不能干活。我不知道这是错的,但是文件没有扩展,名称是Undefined .. 这是我的简单代码; 谢谢大家。

function doGet(p) {

  var app = UiApp.createApplication();
  var flow = app.createFlowPanel().setId('flow');

  var gridfile = app.createGrid(5,3);
  var flabel0 = app.createLabel('Upload the file');
  var flabel1 = app.createLabel('Select file: ');

  var thefile = app.createFileUpload().setName('thefile').setId('thefile');

  var handlerxx = app.createServerHandler('uploadfile').addCallbackElement(flow); 
 thefile.addChangeHandler(handlerxx);

    gridfile.setWidget(0, 0, flabel0)
    .setWidget(2, 0, flabel1)
    .setWidget(2, 1, thefile);

  flow.add(gridfile);

  app.add(flow);  
    return app; 
}

function uploadfile(e) { 
  var app = UiApp.getActiveApplication();  

  var fileBlob = Utilities.newBlob(e.parameter.thefile,"application/zip",e.parameter.thefile);
  var doc = DocsList.createFile(fileBlob);

  app.getElementById('flow').add(app.createLabel('File Uploaded successfully'));
  return app;
}

1 个答案:

答案 0 :(得分:1)

您只能以doGet / doPost表单结构上传文件。

我没有详细解释,而是认为展示一个有效的例子会更容易(老实说它也更简单......)

所以就是这样,请注意我必须添加一个提交按钮来触发表单提交。

顺便说一句,我添加了一个客户端处理程序显示的'loading'标签,因为在上传过程中没有任何反应,用户可能会担心!!

我注释了关于zip类型和fileName的行,因为上传的文件会自动保留名称和类型。

function doGet() {
  var app = UiApp.createApplication();
  var form = app.createFormPanel();
  var flow = app.createFlowPanel().setId('flow');
  form.add(flow);
  var gridfile = app.createGrid(5,3);
  var flabel1 = app.createLabel('Select file: ');
  var lab = app.createLabel('LOADING').setStyleAttributes({'color':'red'}).setVisible(false).setId('lab');
var cliHandler = app.createClientHandler().forTargets(lab).setVisible(true);  
  var thefile = app.createFileUpload().setName('thefile').setId('thefile');
  var button = app.createSubmitButton('Upload the file').addClickHandler(cliHandler);
  gridfile.setWidget(2, 0, flabel1)
  .setWidget(2, 1, thefile)
  .setWidget(2, 2, button);
  flow.add(gridfile).add(lab);

  app.add(form);  
  return app; 
}

function doPost(e) { 
  var app = UiApp.getActiveApplication();  
  Logger.log('doPost');
//  var fileBlob = Utilities.newBlob(e.parameter.thefile,"application/zip",e.parameter.thefile);
  var doc = DocsList.createFile(e.parameter.thefile);
  app.getElementById('lab').setVisible(false);
  app.add(app.createLabel('File Uploaded successfully'));
  return app;
}