CodeIgniter:文章上传图片

时间:2013-05-22 18:49:13

标签: image codeigniter upload

我正在使用MongoDB和Codeigniter构建一个网站,用户可以在其中创建文章(标题+文本),然后(但提交之前),上传一些图片(图片不在文本中)。

我想我会使用jquery.upload。但我的问题是如何在图片和文章之间建立联系(因为img将首先上传),如何重命名?,有什么好办法吗?

3 个答案:

答案 0 :(得分:0)

jquery上传会起作用。并检查它是否成功,然后在表单中创建新的隐藏输入,并根据您的意愿设置其值。

答案 1 :(得分:0)

虽然我从未尝试过这个功能,但这是一个突然出现在脑海中的解决方案:

在“创建文章”页面上创建一个唯一字符串,并将其作为隐藏字段插入到文档中。一个包含6个字符的随机字符串可能就足够了。

上传图片时,请使用该字符串作为图片所属后期版本的标识符。在文件名,路径,数据库条目或对您的方案有用的任何内容中使用字符串。

当文章本身被提交时,唯一的字符串将允许它与图像一起被识别,你可以在那个阶段运用你需要的任何魔法来完全提交所有内容。

请记住,您应该对上传的任何图片进行某种统计和/或垃圾收集,然后放弃相关文章。

答案 2 :(得分:0)

在表格'articles_table'中添加'缩略图'字段。为了更简单的需要,我删除了不必要的部分。我们只使用'title'和'thumbnail'作为字段。

查看| create.php

<?php echo form_open_multipart('articles/insert'); ?>       
  Title <br>
  <?php echo form_input('title','','id="title_input"'); ?><br>
   Thumbnail<br>  
   <input type="file" name="file" size="20" />
   <?php echo form_submit('Submit',"Submit"); ?>
<?php echo form_close(); ?>

控制器| articles.php

function insert()
{
    //$this->articles_model->insert();
    $this->articles_model->save();
    redirect('articles/index');
}

模特| articles_model.php

    function save($id=0)
    {
        $title=$this->input->post('title');

                //Set the config
            $config['upload_path'] = './files/'; 
            $config['allowed_types'] = 'gif|jpg|png|PNG'; 
            $config['max_size'] = '1100';
            $config['max_width'] = '11024';
            $config['max_height'] = '1768';
            $config['overwrite'] = FALSE; 

            //Initialize
            $this->upload->initialize($config);

            //Upload file
            if( ! $this->upload->do_upload("file"))
            {
               //echo the errors
                echo $this->upload->display_errors();
            }
            //If the upload success
            $thumbnail = $this->upload->file_name;

        if($id<1)
        {
            $data=array(
                'title'=>$title,
                'thumbnail'=>$thumbnail
            );
            $this->db->insert('articles_table',$data);
        }
      }