我真的很想知道如何在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