此问题在此处已有答案:
Renaming an uploaded file in CodeIgniter(3个答案)
6个月前关闭。
我正在使用Codeigniter的内置上传库。以下是我的上传设置:
$config['upload_path'] = upload_path() . 'incoming_faxes/';
$config['allowed_types'] = 'xml|pdf';
$config['file_name'] = uniqid('fax-' . time() . '-', true) . '.xml';
$this->load->library('upload', $config);
返回的数据如下所示,但是file_name
后面有一个下划线:
Array
(
[file_name] => fax-1377114300-521518bca7c5a7.65243756_.xml
[file_type] => application/xml
[file_path] => /var/www/vhosts/example.org/httpdocs/uploads/incoming_faxes/
[full_path] => /var/www/vhosts/example.org/httpdocs/uploads/incoming_faxes/fax-1377114300-521518bca7c5a7.65243756_.xml
[raw_name] => fax-1377114300-521518bca7c5a7.65243756_
[orig_name] => fax-1377114300-521518bca7c5a7.65243756_.xml
[client_name] => Sample.xml
[file_ext] => .xml
[file_size] => 84.69
[is_image] =>
[image_width] =>
[image_height] =>
[image_type] =>
[image_size_str] =>
)
如何在文件上传到服务器之前删除下划线?
1条答案
按热度按时间mu0hgdu01#
应该这样做。
测试项目:
看起来Upload.php中的
_prep_filename()
方法会根据分解的文件名检查allowed_types
和mimes_types
。(示例文件名中为65243756)插入到parts
数组中,然后根据allowed_types
和mimes_types
检查该值。在allowed_types
和mimes_types
中都找不到数字,它会附加底缐。这是一个奇怪的问题。请参阅此处了解更多信息:https://github.com/EllisLab/CodeIgniter/issues/1380
分解:
给定文件名
fax-1377114300-521518bca7c5a7.65243756.xml
,会发生以下情况。这将
$filename
分解为包含3个值的数组:下一行⋯
pop
是$parts
数组:下一行⋯
shift
s数组:因此现在
$parts
只包含一个项:39795691
.现在开始运行
它检查
$parts
中是否有任何值(请记住,在本例中我们只有一项:39795691
)在allowed_types
或mime_types
数组中。由于它是一个数字,并且不在这两个数组中,所以它将该部分连接到$filename
变量中,并附加下划线。