如果这个问题的某些部分没有意义,请原谅——我一般都是编程新手。请随时纠正我!
我的问题是:我正在制作一个使用$_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';
}
}
?>
每次我运行这个程序,提交一个或两个文件时,我都会收到"你没有上传任何内容,没关系"的消息,这让我相信我在$_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'];
}