web-dev-qa-db-ja.com

PHPでhtml <input type = "file">のファイルパスを取得するにはどうすればよいですか?

誰かplsはhtmlを使用してファイルパスを取得する方法を教えてもらえますか<input type="file"> PHPでは?

これが私のコードです:

index.php

<form action="csv_to_database.php" method="get" >
 <input type="file" name="csv_file" />
 <input type="submit" name="upload" value="Upload" />
</form>

とで csv_to_database.php

<?php

 if (isset($_GET['csv_file'])) {

 $row = 1;

  if (($handle = fopen($_GET['csv_file'], "r")) !== FALSE) {
   while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
   }
   fclose($handle);
  }

 } 
?>

私の問題は、csvデータが私のphpファイルと同じディレクトリにある場合にのみ機能することです。ファイルパスを取得する必要があると思いますが、その方法がわかりません。

6
Newbie Coder

今持っている$_GETだけを使うべきではありません。あなたのファイルは$_FILES["csv_file"]["tmp_name"]に基づいています。

レビューするのがベスト このチュートリアル 、基本的には次のようなことをする必要があると言っています:

<?php
if ($_FILES["csv_file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["csv_file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["csv_file"]["name"] . "<br />";
  echo "Type: " . $_FILES["csv_file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["csv_file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["csv_file"]["tmp_name"];
  }
?>

そして、そこから行くことができます。一時的な場所からファイルを移動する場合は、move_uploaded_fileを使用します。これもチュートリアルで説明されています:)

8
Nanne

次のリンクを見ると、多くのことが得られると思います: POSTメソッドのアップロード

まず、フォームメソッドをpostに変更し、enctype="multipart/form-data"を追加する必要があります。

次に、$_FILES['csv_file']['tmp_name']から一時ファイルのパスを取得できます。

1
Kokos