前提・実現したいこと
LaravelとGoogleAppsScriptを使って、GoogleDriveにファイルを保存させる仕組みを作ろうと考えています。
しかし、LaravelからGoogleAppsScriptへ受け渡したファイルがcreateFile()でGoogleDriveにアップロードされません。
何故ファイルがアップロードされないのでしょうか。
該当のソースコード
--file_upload.blade.php <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> </head> <body> <div id="myform" style="text-align:center;"> ファイルを選択してからアップロードしてください(10MBまで)<br><br> <form action="{{action('FileUploadController@fileUpload')}}" method="POST" enctype="multipart/form-data"> @csrf <input type="file" id="myFile" name="myFile" multiple/> <input type="submit" id="upload" value="アップロード" /> </form> <div id="progress"></div> </div> </body> </html>
—-FileUploadController.php— class FileUploadController extends Controller { public function fileUpload(Request $request) { $file=$request->file('myFile'); // ファイルアップロードAPI呼び出し $client = new \GuzzleHttp\Client(); $base_url = 'https://script.google.com/macros/s/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/exec'; try { $res = $client->post( $base_url, [\GuzzleHttp\RequestOptions::JSON => [ 'file' => $file, ]]); } catch (Exception $e) { var_dump("Exception!:"); return view('file_upload'); } return view('thanks_for_upload'); } }
—GoogleAppsScript function doPost(e) { // 引数で送られてきたパラメータを取得する var c = e.postData.contents var contents = JSON.parse(c) // パラメーターをそれぞれの変数に格納 var myfile = contents.file; const folderID=‘YYYYYYYYYYYYYYYYYYYYYY’; var uploadFolder = DriveApp.getFolderById(folderID); var driveFile = uploadFolder.createFile(myfile);//アップロード return driveFile.getUrl(); }
補足情報(FW/ツールのバージョンなど)
Laravel:8.53.0
PHP:7.49
あなたの回答
tips
プレビュー