フォームから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ファイルの生成
簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...
-
-
PHPで改行を含むデータをCSV化する際に表示崩れを防ぐ方法
PHPで改行を含むデータをCSV化した場合、そのCSVファイルをエクセル等で開く ...
-
-
PHPからCSVファイルを出力する際にメモリを節約する方法
MySQLよりデータを大量に取り出してCSVファイル化し、ダウンロードさせるとい ...
-
-
PHPで配列データをCSVとしてダウンロードさせる方法
PHPでログ的なデータをCSV化したかった。ただ、複数の人間が使うのでCSVファ ...
-
-
PHPでCSVファイル出力用の関数
ここのところログ系をCSVファイル出力にするケースが多かった為、使いまわせるよう ...