2011-04-28 87 views
5

有人可以告訴我如何在PHP中使用html <input type="file">獲取文件路徑嗎?如何在PHP中的html <input type =「file」>中獲取文件路徑?

這裏是我的代碼:

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文件。我想我需要獲取文件路徑,但我不知道該怎麼做。

+0

http://php.net/manual/en/features.file-upload.php – 2011-04-28 05:51:39

回答

6

您不應該只使用您現在擁有的$_GET。您的文件基於$_FILES["csv_file"]["tmp_name"]

你最好檢查this tutorial,那基本上是說,你需要做這樣的事情:

<?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,也在教程中進行了解釋:)

1

我認爲您會從以下鏈接中看到很多:POST method uploads

首先,您應該將表單方法更改爲post,並添加enctype="multipart/form-data"

然後你可以從$_FILES['csv_file']['tmp_name']得到臨時文件路徑。

-1

在您打電話給fopen時,使用$_GET['csv_file']['tmp_name'] - 這指向上傳後立即在服務器上的文件。

相關問題