我正在使用PHP上传文件的表单.这些是我的投入:
$file_name = filter_input(INPUT_POST, 'file_name');
$file = filter_input(INPUT_POST, 'file');
$file_date = filter_input(INPUT_POST, 'premiere_date');
$file_director = filter_input(INPUT_POST, 'director_name');
这就是我不知道我做错了什么:
if ((filter_input(INPUT_POST, 'submit'))) { //if submit button is clicked
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["file_name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
echo $target_file;
}
这是HTML
Name of the file:
Select your file:
Date of premiere:
Name of the director:
Upload file
//Table with records
$sql = "SELECT myFilms.id, file_name, file, premiere_date, director_name FROM myFilms JOIN myFilms_directors ON myFilms.director_id = myFilms_directors.id";
/*for mysqlia
* $result = $conn->query($sql);
*/
/*for mysql (old)*/
$result = mysql_query($sql);
if ($result) {
echo "
FILE ID | FILE NAME | FILE | PREMIERE DATE | DIRECTOR NAME |
---|
/* in mysqli
* while ($row = $result->fetch_assoc()) */
/*for mysql (old)*/
while ($row = mysql_fetch_array($result)) {
echo '
' . $row['id'] . '' . $row['file_name'] . ' view file' . $row['premiere_date'] . '' . $row['director_name'] . '';}
echo "
";} else {
echo "there is not data on the table";
}
/*for mysqli
$conn->close();
*/
/*for mysql (old)*/
mysql_close($dbhandle);
?>
所以,当我回显$target_file时,我希望它在这种情况下是上传/ nameOfTheFile.pdf的路径,但它只显示为uploads /所以$target_dir,我使用的是basename函数吗?我已经检查了w3schools,它似乎对我来说,但绝对一定是错的…
感谢你们!!
解决方法:
使用var_dump($_ FILES)可以查看整个PHP $_FILES关联数组.如您所见:
array(1) {
["file"]=> array(5) {
["name"]=> string(14) "plugin wp.docx"
["type"]=> string(71) "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
["tmp_name"]=> string(18) "/var/tmp/phpcoayaU"
["error"]=> int(0)
["size"]=> int(262453)
}
}
$_FILES包含一个名为’file’的关联数组,它有5个索引:name,type,tmp_name,error和size.
您分配的是:
$target_file = $target_dir . basename($_FILES["file"]["file_name"]);
其中,参考上述对象是不正确的,因为[“file_name”]不是文件的一部分.解决方案应该是明显的调试信息,只需将[“file_name”]更改为[“name”]:
$target_file = $target_dir . basename($_FILES["file"]["name"]);
有关PHP var_dump()here的一些信息,因为您似乎没有意识到这个函数.
标签:php,file,submit
来源: https://codeday.me/bug/20190528/1169460.html