現在ローカルに作成・保存していたcsvファイルをAWS S3へ保存するように修正を行っています。
バケットへファイルの保存・中身が問題ないことは確認できましたが
ファイルの形式がcsvではなくtxtファイルになってしまい、保存されたファイル名も英数字の羅列になってしまいます。
現状どこで変換が行われているのか特定できず困っております。
ファイルはこのような形式になっております。
Laravelでの設定したファイル名:upload.csv
S3に格納されたファイル名:3EU6rx4YDgWJG74f3XHRmUoEG83YSEG.txt
txt
1No,商品名、カテゴリ¥n1,バナナ,フルーツ¥n2,イチゴ,フルーツ¥n3,トマト,野菜¥n...
PHP
1//CSV出力 2 $filename="upload.csv"; 3 $csvheader = ["No", "商品名", "カテゴリ"]; 4 $cnt = 1; 5 $f = fopen($filename, "w"); 6 mb_convert_variables('SJIS', 'UTF-8', $csvheader); 7 fputcsv($f, $csvheader); 8 if ( $f ) { 9 foreach($list as $val){ 10 $line = [$cnt,$val['name'],$val['category']]; 11 mb_convert_variables('SJIS', 'UTF-8', $line); 12 fputcsv($f, $line); 13 $cnt++; 14 } 15 } 16 fclose($f); 17 Storage::disk('s3')->putFile('Storage/', $filename , 'public'); 18 unlink($filename);
ソースコードの内容を一部変えていますが、この状態でローカルに保存であれば
問題なくcsvファイルとして出力できていることを確認済みです。
試したこと
S3のアクセス拒否を解除するためブロックパブリックアクセス (バケット設定)
を全てオフにしたところファイルの中身がアップロードされているところまで確認できたのですが
この設定ではまずいということでしょうか。
すみませんが、Laravelからのファイルアップロード・S3の設定についてご協力をよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー