无法使用 $_FILES 方法访问文件名,PHP [重复]

Posted

技术标签:

【中文标题】无法使用 $_FILES 方法访问文件名,PHP [重复]【英文标题】:Can't access filename with $_FILES method, PHP [duplicate] 【发布时间】:2015-03-19 16:03:00 【问题描述】:

我正在尝试构建一个文件上传器,其中包含一个不涉及文件的 youtube 教程,但现在我被困在这个名称上。使用 $_Files 什么也不返回,我不确定为什么。 :/

我试图将它呼出,但没有任何反应。

但其他一切似乎都有效。

<html>
<head>
</head>
<body>
<?php

error_reporting(-1);
ini_set('display_errors', 'On');

$con = mysql_connect("localhost","root","root");
if (!$con)
die("Can not connect: " . mysql_error());

mysql_select_db("example",$con);

if(isset($_POST['update']))
$UpdateQuery = "UPDATE repo SET location='$_POST[location]', name='$_POST[name]', description='$_POST[description]' WHERE location='$_POST[hidden]'";               
mysql_query($UpdateQuery, $con);
;

if(isset($_POST['delete']))
$DeleteQuery = "DELETE FROM repo WHERE location='$_POST[hidden]'";          
mysql_query($DeleteQuery, $con);
;

if(isset($_POST['add']))

$AddQuery = "INSERT INTO repo (name, id, image, location, partners, description, date) VALUES ('$image_name', '','$_POST[uimage]', '$_POST[ulocation]', '$_POST[upartners]', '$_POST[udescription]', NOW())";         
mysql_query($AddQuery, $con);
;



$sql = "SELECT * FROM repo";
$myData = mysql_query($sql,$con);
echo "<table border=1>
<tr>
<th>Image</th>
<th>Name</th>
<th>Location</th>
<th>Partners</th>
<th>Description</th>
<th>Date</th>
</tr>";
while($record = mysql_fetch_array($myData))
    ?>
<form action="mydata5.php"
method="post" enctype="multipart/form-data">

<?php
echo "<tr>";

echo "<td>" . "<img src=Assets/Images/" . $record['name'] . " </td>";

echo "<td>" . "<input type=text name=topic value=" . $record['name'] . " </td>";

echo "<td>" . "<input type=text name=name value=" . $record['location'] . " </td>";

echo "<td>" . "<input type=text name=name value=" . $record['partners'] . " </td>";

echo "<td>" . "<input type=text name=description value=" . $record['description'] . " </td>";

echo "<td>" . "<input type=text name=description value=" . $record['date'] . " </td>";

echo "<td>" . "<input type=hidden name=hidden value=" . $record['location'] . " </td>";

echo "<td>" . "<input type=submit name=update value=update" . " </td>";
echo "<td>" . "<input type=submit name=delete value=delete" . " </td>";
echo "</tr>";
echo "</form>";

echo "<form action=mydata5.php method=post>";
echo "<tr>";

// echo "<td><input type=file name=uimage></td>";

?>

<td><input type="file" name="uimage" id="uimage"></td>

<?php
$file = $_FILES['uimage']['tmp_name'];
$image_name = mysql_real_escape_string($_FILES['uimage']['name']);
echo $_FILES['uimage']['error'];

echo "<td><input type=hidden name=uname></td>";
echo "<td><input type=text name=ulocation></td>";
echo "<td><input type=text name=upartners></td>";
echo "<td><input type=text name=udescription></td>";

echo "<td>" . "<input type=submit name=add value=add" . " </td>";
echo "</form>";
echo "</table>";
mysql_close($con);

?>

</body>
</html>

【问题讨论】:

在表单标签中添加这个,enctype="multipart/form-data" 【参考方案1】:

需要在表单标签中添加enctype="multipart/form-data"

【讨论】:

【参考方案2】:

对于文件类型字段,您需要在表单中添加 enctype 属性,以便可以使用 $_FILES 访问上传的文件

用下面的形式更新表单开始标签

<form action="mydata5.php"
method="post" enctype="multipart/form-data">

【讨论】:

您好,感谢您的快速帮助。我添加了它并编辑了我的帖子。我似乎仍然没有做任何事情。我用错了我的名字/身份证吗? 是的,你需要将字段名用引号括起来 当我这样做时,网站根本不再加载。 :// 更新表单以将字段类型和名称用引号括起来,然后检查 $_FILES['uimage']['error'] 或检查是否发生任何错误 我在开始时进行了错误检查,它告诉我 uimage 是和未定义的索引。叹息我也改变了表格,似乎无济于事:C【参考方案3】:

检查您的插入查询。您正在使用 $_POST 作为图像名称。这是错误的。

【讨论】:

什么? 0_0 不,我不是。 $AddQuery = "INSERT INTO repo (name, id, image, location, partners, description, date) VALUES ('$image_name', '','$_POST[uimage]', '$_POST[ulocation]', '$ _POST[upartners]', '$_POST[udescription]', NOW())"; mysql_query($AddQuery, $con);

以上是关于无法使用 $_FILES 方法访问文件名,PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 使用$_FILES 能否获得上传文件的绝对地址

你能相信 PHP 中 $_FILES 数组给出的文件大小吗?

if(isset($_FILES)) 在 PHP 中不起作用

PHP 文件上传

php超级全局变量

在 PHP 中上传时 $_FILES 为空