代码之家  ›  专栏  ›  技术社区  ›  Drew Rich

图片上传后codeigniter不返回我上传表单

  •  1
  • Drew Rich  · 技术社区  · 16 年前

    我还是个新手。我遇到的问题是,文件上传很好,它写入数据库没有问题,但它只是不返回我的上传表单。相反,它保留在do_上传中,不显示任何内容。更奇怪的是,幕后有一些源代码,似乎是当你没有选择要上传的图像时出现的消息。有人能告诉我我做错了什么吗,因为我想在提交后返回到我的上传表单。提前谢谢。以下是我的代码:

    控制器:

    function do_upload()
    {
        if(($error = $this->Upload_model->do_upload()) === true)
        {
    
            $this->load->view('home/upload_form');
    
        }else{
    
            $this->load->view('home/upload_success', $error); 
    
        }
    
    }
    

    模型:

    function do_upload()
    {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '2000';
    
        $this->load->library('upload', $config);
    
        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());
    
            return $error;
        }   
        else
        {
            $data = $this->upload->data();
            $full_path = 'uploads/' . $data['file_name'];
    
            $spam = array(
                'image_url' => $full_path,
                'url' => $this->input->post('url')
            );
    
            $id = $this->input->post('id');
    
            $this->db->where('id', $id);
            $this->db->update('NavItemData', $spam);
    
            return true;
    
        }
    }
    

    查看(称为上载表单):

    <html>
    <head>
    <title>Upload Form</title>
    </head>
    <body>
    
    
    
    <?php if(isset($buttons)) : foreach($buttons as $row) : ?>
    
    
    <h2><?php echo $row->image_url; ?></h2>
    <p><?php echo $row->url; ?></p>
    <p><?php echo $row->name; ?></p>
    <p><?php echo anchor("upload/update_nav/$row->id", 'edit'); ?></p>
    
    
    <?php endforeach; ?>
    <?php endif; ?>
    
    </body>
    </html>
    

    这是实际的上传表单:

    <html>
    <head>
    <title>Upload Form</title>
    </head>
    <body>
    
    
    
    <?php echo form_open_multipart('upload/do_upload');?>
    <?php if(isset($buttons)) : foreach($buttons as $row) : ?>
    <h2><?php echo $row->name; ?></h2>
    <input type="file" name="userfile" size="20" />
    <input type="hidden" name="oldfile" value="<?php echo $row->image_url; ?>" />
    <input type="hidden" name="id" value="<?php echo $row->id; ?>" />
    <br /><br />
    <label>Url: </label><input type="text" name="url" value="<?php echo $row->url; ?>" /><br /><br />
    <input type="submit" value="submit" />
    
    </form>
    
    <?php endforeach; ?>
    <?php endif; ?>
    
    </body>
    </html>
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Tim Cooper    14 年前

    你试过redirect()函数吗?

    redirect('upload');
    
        2
  •  0
  •   Jakub Hampl    16 年前

    在您的源代码中有一些非常令人困惑的部分(例如,当视图不包含上载表单时,为什么称为上载表单)。

    我在你的控制器中看到一个问题,那就是条件总是执行第一个分支。因此,您可能需要将其更改为:

    if(($error = $this->Upload_model->do_upload()) === true)
    

    这将捕获错误并在出错时执行第二个分支。如果这没有帮助,也可以尝试发布你的上传表单。

    推荐文章