有人可以告诉我如何在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 :(得分:8)
你不应该只使用你现在拥有的$_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 :(得分:1)
我认为通过查看以下链接可以获得很多收益:POST method uploads。
首先,您应该将表单方法更改为post
,然后添加enctype="multipart/form-data"
。
然后,您可以从$_FILES['csv_file']['tmp_name']
获取临时文件路径。
答案 2 :(得分:-1)
在您对fopen的调用中,使用$_GET['csv_file']['tmp_name']
- 这会在上传后立即指向服务器上的文件。