2013-04-11 69 views
4

我正在尝试使用CI 2.1.3使用进度条进行文件上载。我已经将文件上传全部正常工作,但获取这个文件的进度并不容易。我已经看过大量的指南都有不同的解决方案,但是他们都没有工作,因为大多数都相当过时(2008-ish)。CodeIgniter上传进度

这里就是我在寻找:(!没有Flash,请)

  • PHP/jQuery的/ AJAX/JavaScript的解决方案
  • 跨浏览器(IE不是一个问题,所以如果在IE8无法正常工作或降低这很好)
  • 笨上传库兼容

这就是它。我的参考代码:

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(); ?> 
+0

看看这个jQuery插件,也许你可以使用它或拿出你在项目中使用的部分关于进度条:http://pixelcone.com/fileuploader/ – 2013-04-11 08:04:46

回答

3

事实上,在做了一些进一步的研究之后,似乎Dropzone.JS与CI一起工作得非常好,只需很少的配置和调整。我还没有机会使用它的所有功能,但只需大约5分钟的工作,就可以获得上传进度并拖动“n”drop上传工作就可以了。

+0

Dropzone.js工作非常好,并有很好的教程。现在,请你帮我找到http://www.dropzonejs.com/上的图片删除选项 – ripa 2013-07-05 08:16:56

1

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
- 编辑4个月前

这是一个艰难的。有很多解决方案,但很大程度上取决于堆栈和目标(例如,您的案例中没有闪存)。有一个PECL extension它提供原生功能以及manyothers试图做的例子the相同thinghave在去年内一直有效。 Theres也this声称基于PHP的output control提供直接的html进展。虽然我无法在本地工作。

最好的办法是开始把糖果混合在一起,并尝试获得一些可行的方法 - 目前还没有一种用于CI上传进度条的直插式即插即用解决方案。

+0

我没有想到会有成为直接的解决方案。我会玩你提出的解决方案,以及检查jQuery文件上传。上传完成后,是否可以修改jQuery文件上传以显示一些自定义数据?我的网站允许上传视频,并在完成上传时显示视频的网址。 – troytc 2013-04-11 22:59:48

+0

我从来没有使用它,但它*必须*。这是一个非常基本的要求。我实际上再次查看了https://github.com/blueimp/jQuery-File-Upload/wiki/jQuery-File-Upload-6.5-with-CodeIgniter-2.1,它确实是完整的。该页面拥有您需要的一切;试试看,如果你无法获得URL显示,请打开另一个问题。 – stormdrain 2013-04-12 13:11:16

+0

好的,谢谢! :) – troytc 2013-04-12 22:17:15