【问题标题】:CI doesn't upload file despite correct config options尽管配置选项正确,CI 仍不上传文件
【发布时间】:2019-08-14 20:13:49
【问题描述】:

我正在创建一个需要用户提交文件的页面,它还将文件名与其他一些数据一起保存在数据库中。

我尝试使用$_FILES 超全局手动配置允许的文件属性,但由于某种原因没有上传,然后我决定使用 CI 的文件上传类,它更简单。我遇到了同样的问题,但代码更容易使用:

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

   $data = $this->input->post('input');
   $this->security->xss_clean($data);

        $config['upload_path'] = './photos/';
        $config['allowed_types'] = 'jpg|png';
        $config['max_size']     = '1000000';
        $this->load->library('upload', $config);

        if (!$this->upload->do_upload('file')) {

          $error = array('error'  =>  $this->upload->display_errors());
        }
        else {
      //Form validation and insert of filename as a string
  }
}

我希望它返回 true 并将新记录插入数据库并保存文件,但是这些都不会发生。顺便说一句,我使用$_FILES["file"]["name"] 将文件名保存在数据库中,我认为还有另一种方法可以做到这一点?

【问题讨论】:

    标签: php file codeigniter


    【解决方案1】:

    您应该查看uploaddata() 方法的the documentation 以获取有关上传文件的信息 - 包括名称,例如

    $fileName = $this->upload->data('file_name'); 
    

    但如果上传失败,这将无济于事。 CI代码仍然是这种情况吗?如果有,$error 包含什么?

    【讨论】:

    • print_r($error);Array ( [error] => The upload destination folder does not appear to be writable. )
    • 是的,这将阻止上传。很可能是由于文件权限。将权限设置为 777 - 任何人都可以读/写。
    • $config 数组中的权限吗?
    • 没有。您必须使用计算机的文件浏览器来查找目录并设置权限。取决于您的操作系统,可能在文件夹的“属性”下找到。
    • 我使用 Ubuntu - Linux
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2016-08-19
    • 2015-09-24
    • 2021-10-21
    • 2021-11-12
    相关资源
    最近更新 更多