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で読み取り
}

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事