PHP: $_FILES returns 空
PHP: $_FILES returns empty
如果这个问题的某些部分没有意义,请原谅——我是一般编程的新手。欢迎指正!
这是我的问题:我正在制作一个使用 $_POST 的 PHP 上传页面。 HTML 部分有两个上传字段,都是可选的。所以这是我的代码,比方说,example-upload.php:
<form action="" enctype="multipart/form-data" method="post">
<input type="file" id="upload1" name="upload1" accept=".jpg">
<input type="file" id="upload2" name="upload2" accept=".jpg">
<button type="submit" name="submit">Submit either, both, or none of these</button>
</form>
<?php
if (isset($_POST['submit'])) {
if (!empty($_POST['upload1'])) {
$filename_upload1 = $_FILES['upload1']['name'];
}
if (!empty($_POST['upload2'])) {
$filename_upload2 = $_FILES['upload2']['name'];
}
// Checks if there is no upload at all
if (!isset($filename_upload1) && !isset($filename_upload2)) {
echo 'You didn\'t upload anything and that\'s OK';
} else {
if (isset($filename_upload1)) {
move_uploaded_file($_FILES['upload1']['tmp_name'], 'path/to/file/' . $filename_upload1);
}
if (isset($filename_upload2)) {
move_uploaded_file($_FILES['upload2']['tmp_name'], 'path/to/file/' . $filename_upload2);
}
echo 'One or two files was successfully uploaded';
}
}
?>
每次我 运行 提交一个或两个文件时,我都会收到 "You didn't upload anything and that's okay" 消息,让我相信我对 $_FILES 变量做错了什么。不寻常的是,我在类似页面上有不同的表单,除了一个上传字段而不是两个。这似乎有效。
有什么建议吗?谢谢!
您的表单中没有 $_POST['upload1']
变量。
文件在 $_FILES
数组中传递。
因此,在最简单的情况下,您可以检查 $_FILES['upload1']['name']
:
if (!empty($_FILES['upload1']['name'])) {
$filename_upload1 = $_FILES['upload1']['name'];
}
对 upload2
进行同样的检查:
if (!empty($_FILES['upload2']['name'])) {
$filename_upload2 = $_FILES['upload2']['name'];
}
您必须检查 $_FILES
而不是 $_POST
if (!empty($_FILES['upload1']))
{
$filename_upload1 = $_FILES['upload1']['name'];
}
如果这个问题的某些部分没有意义,请原谅——我是一般编程的新手。欢迎指正!
这是我的问题:我正在制作一个使用 $_POST 的 PHP 上传页面。 HTML 部分有两个上传字段,都是可选的。所以这是我的代码,比方说,example-upload.php:
<form action="" enctype="multipart/form-data" method="post">
<input type="file" id="upload1" name="upload1" accept=".jpg">
<input type="file" id="upload2" name="upload2" accept=".jpg">
<button type="submit" name="submit">Submit either, both, or none of these</button>
</form>
<?php
if (isset($_POST['submit'])) {
if (!empty($_POST['upload1'])) {
$filename_upload1 = $_FILES['upload1']['name'];
}
if (!empty($_POST['upload2'])) {
$filename_upload2 = $_FILES['upload2']['name'];
}
// Checks if there is no upload at all
if (!isset($filename_upload1) && !isset($filename_upload2)) {
echo 'You didn\'t upload anything and that\'s OK';
} else {
if (isset($filename_upload1)) {
move_uploaded_file($_FILES['upload1']['tmp_name'], 'path/to/file/' . $filename_upload1);
}
if (isset($filename_upload2)) {
move_uploaded_file($_FILES['upload2']['tmp_name'], 'path/to/file/' . $filename_upload2);
}
echo 'One or two files was successfully uploaded';
}
}
?>
每次我 运行 提交一个或两个文件时,我都会收到 "You didn't upload anything and that's okay" 消息,让我相信我对 $_FILES 变量做错了什么。不寻常的是,我在类似页面上有不同的表单,除了一个上传字段而不是两个。这似乎有效。
有什么建议吗?谢谢!
您的表单中没有 $_POST['upload1']
变量。
文件在 $_FILES
数组中传递。
因此,在最简单的情况下,您可以检查 $_FILES['upload1']['name']
:
if (!empty($_FILES['upload1']['name'])) {
$filename_upload1 = $_FILES['upload1']['name'];
}
对 upload2
进行同样的检查:
if (!empty($_FILES['upload2']['name'])) {
$filename_upload2 = $_FILES['upload2']['name'];
}
您必须检查 $_FILES
而不是 $_POST
if (!empty($_FILES['upload1']))
{
$filename_upload1 = $_FILES['upload1']['name'];
}