php:目录名+文件名
php: name of the directory + name of the file
我正在使用 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 时,我希望它是这种情况下的路径 uploads/nameOfTheFile.pdf 但它只显示为上传/所以 $target_dir, 我使用的是 basename 函数吗?我检查了 w3schools,它似乎适合我,但肯定有问题...
谢谢大家!!
您输入的文件标签与名称字段关联为 'file.'
Instead of using $_FILES["file"]["file_name"] use this $_FILES["file"]["file"]
希望对你有用。
改变
$target_file = $target_dir 。基本名称($_FILES["file"]["file_name"]);
至
$target_file = $target_dir 。基本名称($_FILES["file"]["name"]);
应该可以。
$_FILES 是一个关联数组,其中包含:
Array ( [name] =>
[type] => some value
[tmp_name] => some value
error] => some value
[size] => some value
)
将$_FILES["file"]["file_name"]
更改为$_FILES["file"]["name"]
使用 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' 的 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()
here 的一些信息,因为您似乎没有意识到这个功能。
我正在使用 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 时,我希望它是这种情况下的路径 uploads/nameOfTheFile.pdf 但它只显示为上传/所以 $target_dir, 我使用的是 basename 函数吗?我检查了 w3schools,它似乎适合我,但肯定有问题...
谢谢大家!!
您输入的文件标签与名称字段关联为 'file.'
Instead of using $_FILES["file"]["file_name"] use this $_FILES["file"]["file"]
希望对你有用。
改变
$target_file = $target_dir 。基本名称($_FILES["file"]["file_name"]);
至
$target_file = $target_dir 。基本名称($_FILES["file"]["name"]);
应该可以。
$_FILES 是一个关联数组,其中包含:
Array ( [name] =>
[type] => some value
[tmp_name] => some value
error] => some value
[size] => some value
)
将$_FILES["file"]["file_name"]
更改为$_FILES["file"]["name"]
使用 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' 的 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()
here 的一些信息,因为您似乎没有意识到这个功能。