我正在编写一个用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
<form id="savingFiles" action="upload.php" method="post" enctype="multipart/form-data">
<label>Name of the file:</label>
<input type="text" name="file_name" value="<?php if (isset($row['file_name'])) {
echo $row['file_name'];
} ?>"/>
<br>
<label>Select your file:</label>
<input type="file" name="file" value="<?php if (isset($row['file'])) {
echo $row['file'];
} ?>"/>
<br>Date of premiere:
<input type="date" name="premiere_date" value="<?php if (isset($row['premiere_date'])) {
echo $row['premiere_date'];
} ?>"/>
<br>
<label>Name of the director:</label>
<input type="text" name="director_name" value="<?php if (isset($row['director_name'])) {
echo $row['director_name'];
} ?>"/>
<br>
<button type="submit" value="submit" name="submit">Upload file</button>
</form>
<?php
//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 "<table border='1' id='filesResults'><tr><th>FILE ID</th><th>FILE NAME</th><th>FILE</th><th>PREMIERE DATE</th><th>DIRECTOR NAME</th></tr>";
/* in mysqli
* while ($row = $result->fetch_assoc()) */
/*for mysql (old)*/
while ($row = mysql_fetch_array($result)) {
echo '<tr><td>' . $row['id'] . '</td><td>' . $row['file_name'] . '</td><td><a href= "'. $row['file']. ' ">view file</a></td><td>' . $row['premiere_date'] . '</td><td>' . $row['director_name'] . '</td></tr>';
}
echo "</table>";
} else {
echo "there is not data on the table";
}
/*for mysqli
$conn->close();
*/
/*for mysql (old)*/
mysql_close($dbhandle);
?>
所以,当我回显$target_file时,我希望它是上传/nameOfTheFile.pdf的路径,但是它只显示为$target_dir/所以是$target_dir,我是在使用basename函数吗?我已经查过w3schools了,这对我来说是对的,但肯定是出了什么问题.
谢谢你们!!
发布于 2015-08-13 09:03:54
使用var_dump($_FILES)
可以查看整个PHP关联数组。如你所见:
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”的associative array
,它有5个索引:name
、type
、tmp_name
、error
和size
。
你的任务是:
$target_file = $target_dir . basename($_FILES["file"]["file_name"]);
引用上面的对象是不正确的,因为["file_name"]
不是file
的一部分。解决方案应该显而易见,查看调试信息,只需将["file_name"]
更改为["name"]
即可。
$target_file = $target_dir . basename($_FILES["file"]["name"]);
关于PHP var_dump()
这里的一些信息,因为您似乎不知道这个函数。
发布于 2015-08-13 08:54:13
变化
$target_file = $target_dir。basename($_FILES"file");
至
$target_file = $target_dir。basename($_FILES"file");
应该行得通。
发布于 2015-08-13 08:54:31
$_FILES是一个关联数组,它包含:
Array ( [name] =>
[type] => some value
[tmp_name] => some value
error] => some value
[size] => some value
)
将$_FILES["file"]["file_name"]
更改为$_FILES["file"]["name"]
https://stackoverflow.com/questions/31983172
复制相似问题