• 締切済み

php アップロードファイルが*.csv指定の問題

<form name="csvupload" id="csvupload" action="csvread.php" method="post" enctype="multipart/form-data" > <input type="hidden" name="MAX_FILE_SIZE" value="30000" /><br /> csvfile:<input type="file" name="uploadfile" size="50" accept="text/comma-separated-values" /> <input type="submit" name="hyosi" value="ファイル表示" /><br /> </form> htmlからファイルが選択して、php言語でそのファイルが*.csv拡張子で指定して、アップロードする。以下わたし作ったのサンプルで*.exeだとうまくいかなかった。初心者です。急ぎです。誰か助けてください。 if(isset($_POST['hyosi'])){ $file_dir = 'C:\apaches\Apache2\htdocs\practice\csvupload\csvfile\\'; $file_path = $file_dir.$_FILES['uploadfile']['name']; if(!is_uploaded_file($_FILES['uploadfile']['tmp_name'])){ print'*.csvhh拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-4))!=".CSV"){ print'*.csv拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-3))=="EXE"){ print'*.csvrrr拡張子のファイルを参照してください。'; exit; /* elseif(preg_match("/^.*\.(?!csv)$/",$_FILES['uploadfile']['name'])){ print'*.csv拡張子のファイルを参照してください。'; exit; */ } elseif($_FILES['uploadfile']['name'] == '' && $_FILES['uploadfile']['size'] == 0){ print'ngngng'; exit; } else{ if(move_uploaded_file($_FILES['uploadfile']['tmp_name'],$file_path)){ $csv_dir = "./csvfile/"; $csv_path = $csv_dir.$_FILES['uploadfile']['name']; $sfile = addslashes($csv_path); $_SESSION['file'] =$sfile; $file=fopen($sfile ,'r'); }else{ print '正常にアップロード処理されませんでした。'; exit; } } }

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

見たところ、警告表示されている $file も fgetcsv も fclose も 使われていないんですが、違うとこが問題なんじゃないですか? > Notice: Undefined variable: file in C:\apaches\Apache2\htdocs\practice\csvupload\csvread.php on line 89 とりあえず line:89 の $file が定義されていない理由を調べてみては?

kayuu3
質問者

お礼

ご回答いただきありがとうございます。 警告表示されている$file も fgetcsv も fcloseも最初にある以下のソースコードチェック後の続きですので。特に問題ないようです。*.exeだったら終了するチェックが問題があるみたいです? 最初にある以下のソースには参照ファイル*.txtのファイルだったら、exit;で終了することできました。 elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-4))!=".CSV"){ print'*.csv拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-3))=="EXE"){ print'*.csvrrr拡張子のファイルを参照してください。'; exit; }

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

で、何がしたいのですか? >うまくいかなかった 何がうまく行かなくて、どのようにうまく行かなかったのですか? エラーメッセージ等があれば一緒に補足してください。

kayuu3
質問者

補足

html画面から参照するファイルが*.csvファイルだけ参照できることで、 例:参照するファイルが*.txtファイルでしたら、その場で終了する。 つまり、拡張子か.csv(C:\apaches\Apache2\htdocs\practice\csvupload\csvfile\Book1.csv)であればそのファイルデータを指定したフォルダに保存して同時に読み込んで表示する。そうじゃなければ、終了する。 現在では、参照するファイルC:\Program Files\Skype\Phone\skype.exeであれば以下のエラーメッセージです。結果では終了してほしいです。 Notice: Undefined variable: file in C:\apaches\Apache2\htdocs\practice\csvupload\csvread.php on line 89 Warning: fgetcsv() expects parameter 1 to be resource, null given in C:\apaches\Apache2\htdocs\practice\csvupload\csvread.php on line 89 Myプロダクト最新トビックス 全て見る 1 Notice: Undefined variable: file in C:\apaches\Apache2\htdocs\practice\csvupload\csvread.php on line 308 Warning: fclose(): supplied argument is not a valid stream resource in C:\apaches\Apache2\htdocs\practice\csvupload\csvread.php on line 308

  • TA-HT81S
  • ベストアンサー率39% (72/184)
回答No.1

> htmlからファイルが選択して、php言語でそのファイルが*.csv拡張子で指定して、アップロードする。 意味が全然わかりません。 html画面からファイルを参照させて選択するのですよね。 それを次のphp画面で受け取ってから先は、何をするのですか?

kayuu3
質問者

補足

説明不足で、すみませんでした。 html画面からファイルを参照させて選択するです。そしてphp画面で受け取ってから、指定したフォルダに保存し、同時に読み込んで表示です。 ご回答いただきありがとうございます。

関連するQ&A