用CodeIgniter上传ZIP文件?
我正在使用下面的代码在PHP中使用CodeIgniter上传和提取ZIP压缩文件。用CodeIgniter上传ZIP文件?
$config['upload_path'] = 'backups/';
$config['allowed_types'] = 'zip';
$config['file_name'] = $project_id;
$this->load->library('upload', $config);
if (file_exists('backups/' . $project_id . '.zip')) {
try {
delete_file('backups/' . $project_id . '.zip');
} catch (exception $e) {
// do nothing...
}
}
if ($this->upload->do_upload('zip_archive')) {
$upload_data = $this->upload->data();
$file_name = 'backups/'.$upload_data['file_name'];
$this->sync_model->extract_zip_archive($project_id, $file_name, TRUE);
echo "Success";
} else {
echo $this->upload->display_errors('<p>','</p>');
}
虽然“您正试图上传的文件类型是不允许的,但我收到了错误。”即使它是我正在上传的有效.zip文件。 (它的大小不超过允许的最大值)
这个问题也发生在我试过的每个文件类型都不是图像。
任何指针? 干杯!
我解决它使用 “kofic” 提供的代码在这里:http://ellislab.com/forums/viewthread/113029/
如果你能在这里提供解决方案而不是链接,那将是非常好的。我无法打开链接。 – 2016-03-11 06:53:43
$config['allowed_type']
应该是一个mime类型的列表,但它恰好会发生,有时候只是文件扩展名会起作用(至少在图像上是这种情况)。
尝试:
$config['allowed_type'] = 'application/zip';
虽然这些也都是MIME类型ZIP:
application/x-zip
application/x-zip-compressed
application/octet-stream
application/x-compress
application/x-compressed
multipart/x-zip
更具体地说,唯一的扩展将工作'$ config ['allowed_type']'是gif,jpg,jpeg,png和jpe。至于CodeIgniter希望你放在'$ config ['allowed_type']'中,你可以看看'system/application/config/mimes.php'。 – jimyi 2009-09-13 17:37:52
好吧,我设置这样的变量: $ config ['allowed_types'] ='application/zip | application/x-zip | application/x-zip-compressed | application/octet-stream | application/x-compress |应用程序/ x压缩|多部分/ X-拉链'; 而我收到:“您正试图上传的文件类型是不允许的。” – Christoffer 2009-09-14 06:09:54
你可以保持你的'allowed_types'作为'zip',但要确保你扩展被认为是'zip'的mime类型。
我改线54我 '的application/config/mimes.php' 来的:
'zip' => array(
'application/x-zip',
'application/zip',
'application/x-zip-compressed',
'application/octet-stream',
'application/x-compress',
'application/x-compressed',
'multipart/x-zip'),
(感谢马修Rapati的MIME类型的列表)
事实是,一旦你允许'application/octet-stream',上传的文件几乎可以成为限制允许的类型消失的一部分。但是因为CI迫使你把它设置成某种东西,我认为它还是比它好:
$config['allowed_types'] = '*';
这也有效。
当然:0x3A28213A,0x6339392C,0x7363682E。 http://xkcd.com/138/ – soulmerge 2009-09-13 10:45:58
这实际上很有趣,但没有解决问题:) – Christoffer 2009-09-13 11:53:11
这就是为什么它是一个评论,而不是一个答案:) – soulmerge 2009-09-13 16:31:03