【发布时间】:2011-08-14 13:43:24
【问题描述】:
我真的很想知道当我在 PHP 中上传文件时如何获得完整的文件路径?
这是我的问题...
我在 PHP 中导入一个 csv 文件。上传文件不是问题,但用于导入 csv 文件的函数 fgetcsv() 需要 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 的完整文件路径,但找不到任何功能。
我对网络开发非常陌生,所以请耐心等待。请尽可能简单地回答...请帮助...
【问题讨论】:
-
请首先提供此.CSV文件所在的目录路径以及您的此编码文件所在的目录
-
如果您执行 print_r($_FILES),您会发现可以使用更多信息。例如 $_FILES['csv_file']['tmp_name'] 包含您上传文件的完整(临时)路径。
fopen可以用这个做点什么。另见php.net/manual/en/features.file-upload.post-method.php -
@vindia 我认为 $_FILES['csv_file']['tmp_name'] 显示了在服务器中临时存储上传文件的位置。我要问的是源的文件路径。
-
你没有得到源的文件路径。 从不。浏览器出于安全/隐私原因将其过滤掉。 @vindia 指出了您代码中的功能错误。无论如何,您都不能在服务器上使用客户端文件路径。那是两个不同的文件系统,相同的路径是行不通的。
标签: php csv fopen filepath fgetcsv