コンポーネントはこちら
// dompdf composer require barryvdh/laravel-dompdf // phpspreadsheetを使うにはzipが必要 sudo yum install --enablerepo=remi,remi-php73 php-pecl-zip // spreadsheet composer require phpoffice/phpspreadsheet
CSV読み込み
// upload処理 $request->validate([ 'file' => 'required|mimes:csv,txt|max:2048', // csvとtxt以外は拒否 ]); $fileName = time().'.'.$request->file->extension(); // ファイル名生成 $request->file->move(storage_path('tmp'), $fileName); // storage/tmpフォルダに移動 self::insertCsv(storage_path('tmp') . '/' . $fileName);
// 保存したファイルをCSVでゴニョゴニョ
private static function insertCsv($path = null) { // CSV取得 $file = new SplFileObject($path); $file->setFlags( SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE ); $array = array(); // 一行ずつ処理 foreach($file as $key => $line) { $array['hoge'] = $line['hogehoge']; } }
フロント側はajaxでUPLOAD
jQuery(document).ready(function($) { var uploadFile = function(file) { formData = new FormData(); formData.append('file', file); formData.append('_token', $('input[name="_token"]').val()); $.ajax({ url: "/hoge/upload", // 通信先のURL type: "POST", // 使用するHTTPメソッド data: formData, enctype: 'multipart/form-data', processData: false, contentType: false, cache: false, dataType: "csv", timespan: 1000 // 通信のタイムアウトの設定(ミリ秒) }).done(function (item, textStatus, jqXHR) { alert('CSVの登録が完了しました。'); }).fail(function (jqXHR, textStatus, errorThrown) { // 7. alwaysは、成功/失敗に関わらず実行される }).always(function () { }); };
これでajaxにてCSVファイルをUPして保存できました。
コメント