我正在使用MongoDB和Codeigniter构建一个网站,用户可以在其中创建文章(标题+文本),然后(但提交之前),上传一些图片(图片不在文本中)。
我想我会使用jquery.upload。但我的问题是如何在图片和文章之间建立联系(因为img将首先上传),如何重命名?,有什么好办法吗?
答案 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);
}
}