【发布时间】:2014-03-02 15:47:14
【问题描述】:
由于某种原因 Stack Overflow 删除了这一行,我先打声招呼并感谢您的关注。
正如标题所说,Code Igniter 没有返回文件扩展名类型。我试过了
$upload_data = $this->upload->data();
$ext = $upload_data['file_ext'];
但它返回一个空字符串。
如果我得到 var dump $upload_data,你可以看到它没有文件类型。这是一个错误吗?我错过了什么吗?除了我无法检索文件扩展名以将其放入数据库之外,其他一切都按预期工作。
array (size=14)
'file_name' => string '123456' (length=6)
'file_type' => string '' (length=0)
'file_path' => string 'uploads/' (length=8)
'full_path' => string 'uploads/123456' (length=14)
'raw_name' => string '123456' (length=6)
'orig_name' => string '' (length=0)
'client_name' => string '' (length=0)
'file_ext' => string '' (length=0)
'file_size' => string '' (length=0)
'is_image' => boolean false
'image_width' => string '' (length=0)
'image_height' => string '' (length=0)
'image_type' => string '' (length=0)
'image_size_str' => string '' (length=0)
文件重命名:
/altering file name to user input
$str = $this->input->post('filename');
$config['file_name'] = $str;
//adding name to DB
$imagename = $str;
$this->Image_model->addImage($imagename, $imageurl);
为了澄清我的查询,我希望能够检索文件扩展名,以便可以将其 URI(URL?) 存储在数据库中,以便最终可以使用数据库中的图像填充下拉列表。
【问题讨论】:
-
你上传的真实文件名是什么(包括扩展名)?
-
它在上传过程中被重命名为用户输入的任何内容,但无论如何要回答你的问题“test.jpg” - 我不认为这是一个问题的原因是因为它没有删除将其放置在上传文件夹中后的扩展名,而不是具有新名称及其扩展名。
-
用户是否在输入中输入了文件的全名?包括文件名和扩展名?我的意思是
$this->input->post('filename') -
不只是第一部分而不是扩展名,这会覆盖它吗?我认为这不是问题,因为图像上传到的文件夹名称正确且扩展名正确。因此,如果我从图像“test.jpg”开始,用户上传它并将其命名为“notttest.jpg”,它将在我的 /uploads/ 文件夹中为 nottest.jpg 但数据库条目只会显示“nottest”。
-
是的,当然!这就是问题所在,CodeIgniter 尝试根据
file_name配置重命名文件,该配置也应包括文件扩展名。
标签: php mysql codeigniter upload