フォームからCSVファイルをアップロードしてPHPの配列に格納する方法
2024/04/18
formからcsvファイルをアップロードさせて、PHPで色々処理したかった。とりあえず配列に入れてしまえば、後はいじれるかと思うのでその方法のメモ。
ソースコード
<? if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], $_FILES["upfile"]["name"])) { chmod( $_FILES["upfile"]["name"], 0644); setlocale(LC_ALL, 'ja_JP.UTF-8'); //ロケール情報の設定 $data = file_get_contents($_FILES["upfile"]["name"]); $data = mb_convert_encoding($data, 'UTF-8', 'sjis-win'); //文字エンコードをUTF-8へ変換 $temp = tmpfile(); //テンポラリファイルの作成 $meta = stream_get_meta_data($temp); //メタデータからファイルパスを取得して読み込み fwrite($temp, $data); //バイナリセーフなファイル書き込み処理 rewind($temp); //ファイルポインタの位置を先頭に戻す $file = new SplFileObject($meta['uri']); //fgetcsvよりSplFileObjectを使うほうが高速らしい。 $file->setFlags(SplFileObject::READ_CSV); $csv = array(); foreach($file as $line) { $csv[] = $line; } fclose($temp); $file = null; var_dump($csv); } else { echo "ファイルをアップロードできません。"; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>csv</title> <body> <form enctype="multipart/form-data" method="post" action=""> <input type="file" name="upfile" /><br /> <input type="submit" value="Upload" /> </form> </body> </html>
参考サイト
関連記事
-
PHPで改行を含むデータをCSV化する際に表示崩れを防ぐ方法
PHPで改行を含むデータをCSV化した場合、そのCSVファイルをエクセル等で開く ...
-
PHPからCSVファイルを出力する際にメモリを節約する方法
MySQLよりデータを大量に取り出してCSVファイル化し、ダウンロードさせるとい ...
-
PHPでCSVファイル出力用の関数
ここのところログ系をCSVファイル出力にするケースが多かった為、使いまわせるよう ...
-
CSVファイルを使って郵便番号から住所を抽出する
■ソース <? error_reporting(E_ALL & ~ ...
-
PHPで簡単にCSVファイルの生成
簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...