如果尚未选择文件,则不要上传

时间:2013-02-17 19:18:40

标签: php forms file upload

我在使用此表单时遇到问题。我希望用户能够编辑日期库中的项目。他们在一个页面上选择了他们想要编辑的项目,并通过GET发送到编辑页面。 GET具有他们需要编辑的项目的ID。

编辑页面加载了插入用户表单的项目的详细信息(除了文件名称)此字段留空。我正在尝试做一些检查用户是否选择了文件的逻辑。

如果没有,则应忽略此字段,因为我认为用户对已上传的文件感到满意。

如果他们选择了一个文件,那么这意味着他们希望这是新图片。只有这样我才能运行逻辑来上传图片并将其名称插入数据库。

我通过说:

来获取我的POST详细信息
$clean_pic = $_POST['pic'];

然后我说如果它是空白则不执行任何操作,否则运行上传:

if($clean_pic = ''){}
    else{

它不起作用。任何想法我应该如何找出它的空白?减少代码:

if (isset($_POST['add'])) 
{

    // validate 'pic': must consist of alphanumeric characters only.
    $_POST['pic'] = isset($_POST['pic']) ? $_POST['pic'] : '';
    //if(preg_match('/\.(jpg|gif|jpeg)$/i',$_POST['pic']))
        //{
        $clean_pic = $_POST['pic'];
        //}
    //else
        //{$error++; $errmsg .= 'Invalid pic. ';}

}


if (isset($_POST['add']) && ($error==0)) 
{                   


    if (!isset($_POST['pic'])) { echo"test1";}
else {echo"test222";}

    /*tied this too but it didnt work (it will always display result 1):
       if (!isset($_POST['pic'])) { echo"test1";}
   if (isset($_POST['pic']))  {echo"test222";}*/

}

else //output error messages 
{
/////////render form
?>
<form enctype="multipart/form-data" action="" method="post" id="save"><fieldset>
<table id="site-form">
    <tr>
    <td class="one_of_three"><label>Item Name:&nbsp;&nbsp;</label></td>
    <td class="two_of_three"><input type="text" name="fileName" id="fileName" value="<?php echo"$db_name";?>"/></td>
    <td><label class="errors" id="fileNameError">&nbsp;</label></td>
    </tr>
    <tr>
    <td class="one_of_three"><label>Picture:&nbsp;&nbsp;</label></td>
    <td class="two_of_three"><input type="file" name="userfile[]" id="pic"/></td>
    <td><label class="errors" id="picError">&nbsp;</label></td>
    </tr>

    <tr>
        <td class="one_of_three">&nbsp;</td>
        <td class="two_of_three"><input name="add" id="save_button" type="submit" value="Update"/>&nbsp;&nbsp;<a href="../">Cancel</a>.</td>
        <td>&nbsp;</td>
    </tr>
</table>
</fieldset></form>
<?php }?>

3 个答案:

答案 0 :(得分:0)

if (!isset($_POST['pic']))怎么样?

答案 1 :(得分:0)

您无法使用'id'属性('pic')访问该文件。您必须使用'name'属性('userfile')的值。你可以在php中使用$ _FILES数组检查文件是否上传。

if(isset($ _ FILES)&amp;&amp; isset($ _ FILES ['userfile'])&amp;&amp;(trim($ _ FILES ['userfile'] ['name'])!='')) {

//您的上传代码

}

否则

{

//没有上传文件

}

答案 2 :(得分:0)

你需要检查一下:  一个是$ _POST ['pic']是一个数组  第二个是你必须使用enctype =“multipart / form-data”属性的形式。