0

引数にフォームを含む呼び出しでHTMLServices を使用google.script.runし、フォーム入力ファイル フィールドから画像を取得してドライブに保存しようとしています。

photodata フィールドを除くすべてのフィールドの値を正しく取得します。 photodatablob の代わりに文字列 "FileUpload" が含まれています。

.getBlob私は同じ結果のためにテストしました。

サーバ側 :

function setUsager(form) {
  var blob = form.photodata;
  Logger.log(Utilities.jsonStingify(blob);
  DriveApp.getFolderById('0B2DdOMvW2Q84N0s4a21LM05wbms').createFile(form.usagerId,blob);
  obj = new {};
  obj.photo = file.getUrl();
  return obj;
}

クリック時のハンドラー

  function onUsagerEditFormSubmit() {
    loading(true);
    var form = this.parentNode;
    google.script.run.withSuccessHandler(showUsager)
        .withFailureHandler(showError)
        .setUsager(form);      
   
  }

そしてフォーム:

<form name="usager-edit" id="usager-edit" method='post' enctype="multipart/form-data">
  <div class="hidden">
    <input type="text" name="type" id="type" value="USAGER" readonly="readonly" />
    <input type="text" name="usagerId" id="usagerId" readonly="readonly" />
  </div>
  <div class="field-container">      
    <label for="nom">Nom</label>
    <input type="text" name="nom" id="nom">
  </div>
  <div class="field-container">
    <label for="prenom">Prenom</label>
    <input type="text" name="prenom" id="prenom">
  </div>
  <div class="field-container">
    <label for="photo">Photo</label>
    <input class="file" type="file" name="photodata" id="photodata" accept='image/*'>
    <div id="prev-photo" name="prev-photo"></div>
    <div class="clear"></div>
  </div>
  <input class="myButton" onClick="onUsagerEditFormSubmit" type="button" name="save" id="save-button" value="Sauvegarder" />
</form>
4

1 に答える 1

1

間違った createFile メソッドのオーバーロードを使用しています。

setUsager

createFile(blob)を使用する必要があるときに、 createFile(name, content)を使用しています。

...
var file = DriveApp.getFolderById('****************************').createFile(blob);
...

file次のように定義する必要がありますobj.photo = file.getUrl();

また、以下を変更できます。

...
<input class="myButton" onClick="onUsagerEditFormSubmit" type="button" name="save" id="save-button" value="Sauvegarder" />
...

に:

...
<input class="myButton" onClick="onUsagerEditFormSubmit(this.parentNode)" type="button" name="save" id="save-button" value="Sauvegarder" />
...

  function onUsagerEditFormSubmit() {
    loading(true);
    var form = this.parentNode;
    google.script.run.withSuccessHandler(showUsager)
        .withFailureHandler(showError)
        .setUsager(form);    
  }

に:

  function onUsagerEditFormSubmit(form) {
    loading(true);
    google.script.run.withSuccessHandler(showUsager)
        .withFailureHandler(showError)
        .setUsager(form);    
  }

わずかな変更:

...
Logger.log(Utilities.jsonStingify(blob);
...
obj = new {};
...

に:

...
Logger.log(Utilities.jsonStringify(blob));
...
var obj = {};
...
于 2013-08-17T20:06:27.467 に答える