【问题标题】:Codeigniter: Image UploadCodeigniter:图片上传
【发布时间】:2011-06-08 17:58:49
【问题描述】:

我有一个很大的表单,我只是添加了一个文件输入以允许用户上传图片。

这是新的 HTML:

<input type="file" name="file_1" />
<input type="text" name="image_description_1" class="text-input"/>

这是新的 _submit 函数:

if($this->CI->input->post('file_1')){
    $config['overwrite'] = TRUE;
    $config['allowed_types'] = 'jpg|jpeg|gif|png';
    $config['max_size'] = 2000;
    $config['upload_path'] = realpath(APPPATH . '../assets/uploads/avatars');

    $this->CI->load->library('upload', $config);
    $this->CI->upload->do_upload();

    $image_data = $this->CI->upload->data();

    $image['description'] = $this->CI->input->post('image_description_1');
    $image['user_id'] = $id;
    $image['image'] = $image_data['file_name'];

    $this->CI->db->insert('report_images',$image);

}

description 和 user_id 正确提交,但文件丢失。

我应该做一些不同的事情吗?不太确定出了什么问题。

【问题讨论】:

    标签: codeigniter upload


    【解决方案1】:

    首先不要理所当然地得到do_upload(),你必须验证upload

    if ( ! $this->upload->do_upload('file_1'))
    {
        // something went wrong, display errors
    }   
    else
    {
        // everything is fine
    }
    

    另外,很可能是您的upload_path,请查看我链接到的文档:

    //You'll need a destination folder for your uploaded images. Create a folder at the root of your CodeIgniter installation called uploads and set its file permissions to 777.  
    $config['upload_path'] = './uploads/';
    

    因此您可能需要将设置更改为:

    $config['upload_path'] = './assets/uploads/avatars/';
    

    【讨论】:

    • 啊!我得到'你没有选择要上传的文件'......我已经尝试过form_openform_open_multipart。同样,正在输入 db 值,只是没有上传。它可能与我的文件路径有关吗?
    • 首先当然你需要使用form_open_multipart!另外,您的资产文件夹在哪里?在系统文件夹之外?你的文件夹结构是什么?
    • 应用程序、资产和系统位于根目录。
    • @Kevin Brown:好吧,$config['upload_path'] = './assets/uploads/avatars/'; 应该可以工作吗?
    • 我刚刚开始工作。太感谢了。我是个彻头彻尾的白痴。 :)
    【解决方案2】:

    codeigniter 期望你的文件输入被命名为 userfile,除非你在你的代码中这样指定,

    $field_name = "some_field_name";
    $this->upload->do_upload($field_name)
    

    【讨论】:

    • 我更改了我的 html name="userfile"。还是没有运气。
    • 你能把这个添加到你的代码中来代替$this-&gt;CI-&gt;upload-&gt;do_upload()'if(!$this->CI->upload->do_upload()){$this->CI->upload-> display_errors();}`
    【解决方案3】:

    我不确定问题是什么。但可能下面的链接可以帮助你。

    Upload file bug in codeigniter

    您还可以初始化配置以设置首选项。

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

    File Uploading class in codeigniter

    【讨论】:

      【解决方案4】:

      确保输入文件的名称设置为“userfile”,因为上传函数需要来自名称设置为“userfile”的输入字段的文件

      【讨论】:

        猜你喜欢
        • 2013-08-23
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-29
        • 1970-01-01
        相关资源
        最近更新 更多