我真的很想知道如何在PHP中上傳文件時獲取完整的文件路徑?如何在PHP中上傳文件時獲取完整的文件路徑?
這是我的問題...
我正在用PHP導入csv文件。上傳文件不是問題,但用於導入fgetcsv()的csv文件的函數需要fopen。 fopen是一個令我頭痛的問題,因爲它需要一個精確的文件路徑,這意味着該文件應該與php文件位於同一目錄中。如果用戶從不同的目錄中獲取文件,該怎麼辦?
這裏是我的代碼:
index.php
:
<form action="csv_to_database.php" method="POST" enctype="multipart/form-data">
<input type="file" name="csv_file" />
<input type="submit" name="upload" value="Upload" />
</form>
csv_import.php
:
<?php
if ($_FILES['csv_file']['error'] > 0) {
echo "Error: " . $_FILES['csv_file']['error'] . "<br />";
}else{
if (($handle = fopen($_FILES['csv_file']['name'], "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
for ($c=0; $c < count($data) ; $c++) {
echo $data[$c] . " ";
}
echo "<br />";
}
fclose($handle);
}
}
?>
這裏的fopen只能得到這是由可變$_FILES['csv_file']['name']
傳遞的文件名。我試圖得到任何函數來獲取$ _FILES的完整文件路徑在互聯網上,但找不到任何。
我對網絡開發很新,所以請耐心等待。請儘可能簡單的答案...請幫助...
如果你做一個print_r($ _ FILES),你會發現還有更多您可以使用的信息。例如$ _FILES ['csv_file'] ['tmp_name'],其中包含上傳文件的完整(臨時)路徑。 'fopen'可以做這些事情。另見http://www.php.net/manual/en/features.file-upload.post-method.php – vindia 2011-04-28 09:52:36
@vindia我認爲$ _FILES ['csv_file'] ['tmp_name']顯示臨時存儲的位置上傳的文件在服務器上。我問的是源的文件路徑。 – 2011-04-28 10:01:50
您沒有獲取源的文件路徑。 **決不**。出於安全/隱私的原因,瀏覽器會對此進行過濾。 @ vindia指出了代碼中的功能錯誤。無論如何您都不能在服務器上使用客戶端文件路徑。這是兩個不同的文件系統,相同的路徑不起作用。 – mario 2011-04-28 10:11:15