【问题标题】:Codeigniter renaming image file is not workingCodeigniter重命名图像文件不起作用
【发布时间】:2018-11-06 09:25:18
【问题描述】:

我正在使用 codeigniter,我正在尝试上传图像文件。

一切正常,但我无法将上传的文件名更改为自定义名称。

过去 5 小时我已经尝试了所有方法,但没有任何效果。

如果有人能帮忙,那就太好了。

我只需要将上传的文件重命名为custom_name.jpg

控制器文件

 public function uploadimage() {

     $config['overwrite'] = TRUE;
     $config['file_name'] = 'custom_name.jpg';
     $config["allowed_types"] = 'jpg|jpeg|png|gif';
     $config['upload_path'] = './uploads/';

     $config["max_size"] = 1024;
     $config["max_width"] = 400;
     $config["max_height"] = 400;
     $this->load->library('upload', $config);

    if(!$this->upload->do_upload()) {               
        $this->data['error'] = $this->upload->display_errors();
    } else {
        echo "success";                                      
    }  

}

查看文件

<?php echo form_open_multipart('admin/uploadimage'); ?>    
<?php echo form_upload('userfile'); ?><br />
<?php echo form_submit('upload', 'Upload');?>    
<?php echo form_close(); ?>

【问题讨论】:

  • 来自 CI 页面:如果设置 CodeIgniter 会将上传的文件重命名为此名称。文件名中提供的扩展名也必须是允许的文件类型。如果未在原始文件名中提供扩展名,则将使用该文件名。因此,也许可以尝试先使用 PHP 获取上传的文件扩展名,并将其作为变量添加到 file_name 的末尾
  • 看到这个答案stackoverflow.com/a/21811986
  • @WKoppel - 请详细说明一下。
  • @NageshKatke - 这不是我想要的。您发送的链接是根据时间戳重命名文件。请阅读我的问题谢谢
  • @JackHanson 我在最后尝试了$config['file_name'] = 'custom_name.jpg';,它工作正常,上传带有custom_name的文件。可能问题在于配置项的排序。

标签: php codeigniter


【解决方案1】:

只需从 file_name 中删除自定义扩展名并附加上传文件的扩展名。

public function uploadimage() {

 $config['overwrite'] = TRUE;
 $config['file_name'] = 'custom_name';
 $config["allowed_types"] = 'jpg|jpeg|png|gif';
 $config['upload_path'] = './uploads/';

 $config["max_size"] = 1024;
 $config["max_width"] = 400;
 $config["max_height"] = 400;
 $this->load->library('upload', $config);

if(!$this->upload->do_upload()) {               
    $this->data['error'] = $this->upload->display_errors();
} else {
    echo "success";                                      
}  

}

上传成功后也可以使用rename函数重命名文件。

还要检查这些。

上传目录是可写的,路径可以是绝对的,也可以是相对的。

如果您自动加载类$this-&gt;upload-&gt;initialize($config),则通过调用initialize() 方法设置首选项

您对文件大小有一些限制,还要检查您的图像大小。

【讨论】:

  • 谢谢,试过了,但不幸的是还是不行。请问还有什么建议吗?
  • 检查你的自动加载文件,你在那里加载了上传库?它应该被加载一次,无论是在自动加载中还是在函数中。
  • 天啊,非常感谢!我尝试了一切,这让我发疯。当我按照您的建议删除 $config["max_size"] = 1024; $config["max_width"] = 400; $config["max_height"] = 400; 时,它起作用了。但是为什么会这样哈哈
  • 你是个天才我的巴基斯坦朋友
  • 太棒了 :) 享受你的每一天,祝你的努力和天才的工作一切顺利,事业蒸蒸日上
猜你喜欢
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2012-11-11
  • 2015-07-17
  • 1970-01-01
  • 2012-03-06
  • 2016-09-26
  • 1970-01-01
相关资源
最近更新 更多