LaravelでExcel取得時にバイナリファイルとなってしまってエラーになった件
Laravelを使っていて、
Excelファイルを取得していたときに、
いつもであれば問題ない処理で、
エラーがなぜか発生した。
これを調べていくと、
アップロードしているExcelファイルが、
1つだけ、なぜか、保存するとバイナリファイル扱いになっていた。
前提:Laravel-Excelを使用
Excelファイルの読み取りに関しては、
Laravel-Excelというのを使っていた。
リンクをメモ。
実際の使用方法は、
上記のGithubなどを参考。
エラー内容
エラーとしては、
上記のライブラリを使っていた時に、
Maatwebsite\Excel\Reader::toArray():
Argument #3 ($readerType) must be of type string,
null given, called in .....
というエラーが発生していた。
エラー調査
上記のライブラリの問題かと思って調べていたが、
ファイルをアップロードされたファイルを調べると、
うまく読み取りできたファイル
xxxxxxx.xlsx
うまく読み取りできないファイル
xxxxxxx.bin
このような形で、
project/storage/app/xlsx/
に入れたファイルがおかしくなっていた。
ただ、このバイナリファイルになる事象自体については、
特定ができなかったので、拡張子を変える対応を行った。
エラー対応
ファイルの読み込み処理の前の、
ファイルをサーバ側に保持したファイルを、
拡張子を「.bin」から「.xlsx」に変更した。
ライブラリがその拡張子だとエラーだから、
元の拡張子に
$files = $request->file('files')
foreach($files as $file) {
// この保存されたファイルがバイナリになっていたので、
// 拡張子を変更して暫定対応
$xlsx = $file->store('xlsx');
:
:
// 変更後のファイル名
$to_file_name = str_replace('.bin', '.xlsx', $xlsx);
:
:
// ファイル自体をリネーム
rename($from, $to);
:
:
// Laravel-Excelで読み取り
}
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。