CodeIgniter 上传进度
Posted
技术标签:
【中文标题】CodeIgniter 上传进度【英文标题】:CodeIgniter Upload Progress 【发布时间】:2013-04-03 02:25:19 【问题描述】:我正在尝试使用 CI 2.1.3 上传带有进度条的文件。我已经让文件上传一切正常,但是获得这个文件进度并不容易。我查看了大量具有不同解决方案的指南,但它们似乎都不起作用,因为大多数都非常过时(2008 年左右)。
这就是我要找的东西:
php/jQuery/AJAX/javascript 解决方案(请不要使用 Flash!) 跨浏览器(IE 不是问题,所以如果它在 IE8 或更低版本中不起作用,那也没关系) CodeIgniter 上传库兼容就是这样。我的参考代码:
PHP:
public function do_upload()
// Configure and load the uploads library
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'mp4|mov';
$config['encrypt_name'] = TRUE;
$config['max_size'] = '2621440'; // 2.5 GB, in kilobytes
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile'))
$this->session->set_flashdata('error', $this->upload->display_errors('', ''));
redirect('upload');
else
$this->session->set_flashdata('upload_data', $this->upload->data());
$upload_data = $this->upload->data();
$uploader = $this->flexi_auth->get_user_by_id()->row_array()['uacc_username'];
$this->load->model('upload_model');
$this->session->set_flashdata('uaid', $this->upload_model->generate_uaid($upload_data['raw_name']));
$this->upload_model->create_upload($upload_data['file_name'], $upload_data['raw_name'], $upload_data['client_name'], $upload_data['file_size'], $upload_data['file_path'], $uploader);
redirect('upload');
html:
<div class="progress progress-striped active" id="upload_progress" style="display: none;">
<div class="bar" id="upload_progress_bar" style="width: 0%;"></div>
</div>
<?php echo form_open_multipart('upload/do_upload', array('id' => 'upload_form')); ?>
<input type="file" name="userfile" size="20" />
<button type="submit" name="upload">Upload</button>
<?php echo form_close(); ?>
【问题讨论】:
看看这个 jQuery 插件,也许你可以使用它或者在你的项目中取出一些关于进度条的部分:pixelcone.com/fileuploader 【参考方案1】:实际上,经过进一步研究,Dropzone.JS 似乎与 CI 配合得非常好,只需很少的配置和调整。我还没有机会使用它的所有功能,但经过大约 5 分钟的工作后,上传进度和拖放上传工作正常。
【讨论】:
Dropzone.js 工作得非常好并且有很好的教程。现在请您帮我删除dropzonejs.com中的图像选项【参考方案2】:http://vortexdev.netii.net/article_20/Integrate_jQuery_File_Upload_with_CodeIgniter - 2012/05/14
https://github.com/blueimp/jQuery-File-Upload/wiki/jQuery-File-Upload-6.5-with-CodeIgniter-2.1 - 5 个月前编辑
这是一个艰难的过程。有很多解决方案,但很大程度上取决于堆栈和目标(例如,在您的情况下没有闪存)。有一个PECL extension 提供本机功能以及many 的示例others 尝试做the 相同的thing,have 在去年是活跃的。还有this 声称提供基于PHP 的output control 的直接html 进度。我无法让它在本地工作。
最好的办法是开始将东西混合在一起并尝试获得一些有效的东西 - 目前还没有直接的即插即用解决方案用于 CI 上传进度条。
【讨论】:
我没想到会有一个直接的解决方案。我将使用您建议的解决方案,并查看 jQuery File Upload。可以修改 jQuery File Upload 以在上传完成后显示一些自定义数据吗?我的网站允许上传视频,我们会在视频上传完成后显示视频的 URL。 我从未使用过它,但它必须。这是一个非常基本的要求。我居然又看了github.com/blueimp/jQuery-File-Upload/wiki/…,果然是完整的。该页面包含您需要的一切;试一试,如果您在显示 URL 时遇到问题,请打开另一个问题。以上是关于CodeIgniter 上传进度的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的 ReferenceError:$ 未定义 - Datepicker - Codeigniter 3
无法让 echo form_open 工作 - CodeIgniter
codeigniter 3 - 删除 index.php:Linux 上的错误 404,但在 Windows 上工作正常