勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

フォームからCSVファイルをアップロードしてPHPの配列に格納する方法

   2026/08/05  PHP

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>

 

参考サイト

http://php-archive.net/php/csv-tsv-array/

 - PHP

  関連記事

CSVファイルをアップロードしてWordPressに記事を投稿する方法
CSVファイルをアップロードしてWordPressに記事を投稿する方法

CSVファイルをアップロードすることでWordPressに記事を投稿したかった。 ...

CSVファイルをローカルで開くと「SYLKファイルが云々」のアラートが出る場合の対応方法
CSVファイルをローカルで開くと「SYLKファイルが云々」のアラートが出る場合の対応方法

データベースのログを整形してCSVファイルを生成し、ダウンロード及びエクセルで開 ...

JavaScriptでtableタグをエクセルファイル(xlsx)としてダウンロードさせる方法
JavaScriptでtableタグをエクセルファイル(xlsx)としてダウンロードさせる方法

table内のデータを何らかのファイルでダウンロードさせたい。通常PHPでCSV ...

WordPressでカスタムフィールドとCSVファイル投稿する方法
WordPressでカスタムフィールドとCSVファイル投稿する方法

WordPressでカスタムフィールド設定している環境に、CSVファイルアップロ ...

LeagueCSVで「The header record must be empty~~」エラーが発生する原因と対応方法
LeagueCSVで「The header record must be empty~~」エラーが発生する原因と対応方法

以前にメモしたPHPのLeagueCSV(thephpleague / csv) ...