它应该是图片的多重上传形式
我得到了上传表单的 HTML 代码:
<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">
<label id="filelabel" for="fileselect">Choose the Pictures</label>
<input type="file" id="fileselect" class="fileuplaod" name="uploads[]" multiple />
<span class="text">Exist Album</span><br />
<select id="existAlbum" name="existAlbum" size="1">
<option value="noAlbum">SELECT ALBUM</option>
</select>
<span class="text">OR</span>
<span class="text">New Album</span><br />
<input id="newAlbum" name="newAlbum" type="text" maxlength="20" placeholder="ALBUM NAME"/>
<input type="submit">
</form>
指向上传.php的表单链接。但是我得到:
Notice: Undefined index: existAlbum in E:xampphtdocsfotokursuploadupload.php on line 11
Notice: Undefined index: newAlbum in E:xampphtdocsfotokursuploadupload.php on line 12
以下是上传.php:
<?PHP
$allowedExtensions = array('png', 'jpg', 'jpeg');
$maxSize = 20971520;
$i = 0;
$first = 0;
$exist_album = $_POST['existAlbum'];
$new_album = $_POST['newAlbum'];
我的错在哪里?我找不到它...
编辑在我的代码中添加以下内容:
if( isset( $_POST['existAlbum'] ) or isset( $_POST['newAlbum'] ) ){
$exist_album = $_POST['existAlbum'];
$new_album = $_POST['newAlbum'];
}else{
echo 'no album <br />';
}
print_r($_POST);
新输出:
no album
Array ( )
Notice: Undefined variable: new_album in E:xampphtdocsfotokursuploadupload.php on line 20
Notice: Undefined variable: exist_album in E:xampphtdocsfotokursuploadupload.php on line 21
Notice: Undefined variable: new_album in E:xampphtdocsfotokursuploadupload.php on line 22
Notice: Undefined variable: exist_album in E:xampphtdocsfotokursuploadupload.php on line 23
您的问题之一是existAlbum
没有与之关联的实际值。
您有<option>Select Album</option>
,它没有与选项元素关联的值。 如果没有关联的值,则不会将 select 元素发布到服务器。 应将其更改为:
<option value="">Select Album</option>
编辑
由于用户只需要提供其中一个,因此您应该使用以下方法来设置变量:
$existsAlbum = (isset($_POST['existAlbum']) && !empty($_POST['existAlbum'])) ? $_POST['existAlbum'] : 'defaultValue';
$newAlbum = (isset($_POST['newAlbum']) && !empty($_POST['newAlbum'])) ? $_POST['newAlbum'] : 'defaultValue';
需要注意的重要一点是,Internet Explorer 不支持占位符属性。
编辑 2
这是我的快速测试页面,可以测试.php:
<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">
<label id="filelabel" for="fileselect">Choose the Pictures</label>
<input type="file" id="fileselect" class="fileuplaod" name="uploads[]" multiple />
<span class="text">Exist Album</span><br />
<select id="existAlbum" name="existAlbum" size="1">
<option value="noAlbum">SELECT ALBUM</option>
</select>
<span class="text">OR</span>
<span class="text">New Album</span><br />
<input id="newAlbum" name="newAlbum" type="text" maxlength="20" placeholder="ALBUM NAME"/>
<input type="submit" value="Submit">
</form>
上传.php
<pre>
<?php print_r($_POST); ?>
<?php print_r($_FILES); ?>
</pre>
结果
Array
(
[existAlbum] => noAlbum
[newAlbum] =>
)
Array
(
[uploads] => Array
(
//Contents here
)
)
existAlbum,因为如果您没有选择任何内容,它不会返回任何值。你可以给现有的专辑选择器一个默认值='1'或其他东西:
if isset($_POST['existAlbum']){
echo 'yes';
}
else{
echo 'no';
}
我认为规则enctype="multipart/form-data"有问题。尝试删除它,它应该由您的浏览器自动设置。
选项选择专辑没有值,即使您不打算使用该选项,也要给它一个值,例如 0,以便它始终在 POST 变量中设置。
<option value="0">SELECT ALBUM</option>
<option value="some album">Some Album</option>
...
如果未选择 select,您将根本不会得到它(您希望它是空的,但事实并非如此)。你必须先检查
$exist_album = isset($_POST['existAlbum']) ? $_POST['existAlbum'] : '<DEFAULT VALUE>';
复选框也是如此。
newAlbum
的事情应该工作,因为文本输入始终存在。看
print_r($_POST);
看看里面到底有什么,就我而言 - 在"空"提交时,我得到:
Array
(
[existAlbum] => SELECT ALBUM
[newAlbum] =>
)
顺便说一句:你应该使用<?php
而不是<?PHP
。
使用 print_r($_POST);
打印 $_POST 数组 确保您的表单操作正确
<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">