无法使用 $_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 数组给出的文件大小吗?