2015-10-06 14 views
10

Cách tải lên nhiều tệp trong trình mã hóa 3.0.1. Có những vấn đề tương tự và các giải pháp trong stackoverflow nhưng tiếc là không phải của họ đang giúp đỡ để khắc phục vấn đề tôi đang phải đối mặt.Cách tải lên nhiều tệp trong trình mã hóa 3.0.1

Đây là thông báo lỗi xuất hiện You did not select a file to upload với mã hiện tại của tôi

view (addGallery)

<section> 
    <h2>Add Gallery</h2> 
     <?php echo form_open('Newsupload/gallery', ['id'=>'news', 'name'=>'news', 'method'=>'post','enctype'=>'multipart/form-data']) ?> 

     <div class="grp width-50"> 
      <label for="name">Album Name</label> 
      <input type="text" name="name" id="name" value="" placeholder=""> 
     </div> 
     <div class="grp width-100"> 
      <div id="selectedFiles"></div> 
      <input type="file" id="files" name="files[]" multiple size="20"><br/> 
     </div> 
     <?php if (isset($error)) { 
      echo $error; 
     } ?> 
     <grp class="grp width-100"> 
      <button>Add</button> 
     </grp> 
    </form> 
</section> 

controller (bộ sưu tập)

public function gallery() 
{ 

    $this->load->library('upload'); 

    $files = $_FILES; 
    $cpt = count($_FILES['files']['name']); 
    for($i=0; $i<$cpt; $i++) 
    {   
     $_FILES['files']['name']= $files['files']['name'][$i]; 
     $_FILES['files']['type']= $files['files']['type'][$i]; 
     $_FILES['files']['tmp_name']= $files['files']['tmp_name'][$i]; 
     $_FILES['files']['error']= $files['files']['error'][$i]; 
     $_FILES['files']['size']= $files['files']['size'][$i];  

     $this->upload->initialize($this->set_upload_options()); 
     // $this->upload->do_upload('files[]'); 
     if (!$this->upload->do_upload('files[]')) 
     { 
      $error =['error' => $this->upload->display_errors()]; 
      $this->load->view('admin/addGallery', $error); 
     } 
    } 
} 
public function set_upload_options() 
{ 
    $config['upload_path'] = getcwd().'/upload/'; 
    $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
    $config['remove_spaces'] = true; 
    return $config; 
} 
+0

$ this-> upload-> do_upload ('file'); –

Trả lời

2

Tôi nghĩ rằng bạn cần phải thay đổi dòng này:

if (!$this->upload->do_upload('files[]')) 

để

if (!$this->upload->do_upload('files')) 
0

thử điều này:

 $files = $_FILES; 
     $cpt = count($_FILES['files']['name']); 
     for($i=0; $i<$cpt; $i++) 
     { 
     $_FILES['files']['name']= $files['files']['name'][$i]; 
     $_FILES['files']['type']= $files['files']['type'][$i]; 
     $_FILES['files']['tmp_name']= $files['files']['tmp_name'][$i]; 
     $_FILES['files']['error']= $files['files']['error'][$i]; 
     $_FILES['files']['size']= $files['files']['size'][$i]; 
     $this->upload->initialize($this->set_upload_options()); 
     $this->upload->do_upload(); 
     $fileName = $_FILES['files']['name']; 
     $images[] = $fileName; 

và thực hiện một chức năng set_upload_options()

$config = array(); 
     $config['upload_path'] = './upload/'; //give the path to upload the image in folder 
     $config['allowed_types'] = 'gif|jpg|png'; 
      $config['max_size'] = '0'; 
     $config['overwrite'] = FALSE; 
    return $config; 

Để biết thêm Tải lên nhiều file sử dụng CodeIgniter thử này http://w3code.in/2015/09/upload-file-using-codeigniter/

+0

tôi đã cố gắng mã này, nhưng tôi đã trao lỗi Mức độ nghiêm trọng: Chú ý nhắn: biến Không xác định: _file Tên tập tin: thư viện/Upload.php Dòng Số: 408 –

+0

Had bạn làm cho set_upload_options function()? – Ricky

2

bạn không chuyển tên tệp để tải lên chức năng.Thử điều này.

if (!$this->upload->do_upload($_FILES['files']['name'])) 
     { 
      $error =['error' => $this->upload->display_errors()]; 
      $this->load->view('admin/addGallery', $error); 
} 
0

Vui lòng thử dưới

for($i=0; $i<$cpt; $i++) 
{   
    $_FILES['files'] = $files[$i]; 
    $this->upload->initialize($this->set_upload_options()); 
    if (!$this->upload->do_upload('files')) 
    { 
     $error =['error' => $this->upload->display_errors()]; 
     $this->load->view('admin/addGallery', $error); 
    } 
} 
0

Bạn có thể tải nhiều dữ liệu với CodeIgniter trong một yêu cầu duy nhất. Bạn chỉ cần làm do_upload() cho mỗi tệp. Đây là một thực hiện. Bạn có thể làm việc nó thành một vòng lặp nếu cần thiết.

// Image upload Config 
    $config['upload_path'] = './uploads/'; 
    $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
    $config['max_size']  = '1000000'; 
    $config['encrypt_name'] = TRUE; 
    $this->load->library('upload', $config); 

    // Upload Files 
    if ($_FILES['first_file']['name'] && $this->upload->do_upload('first_file')) { 
     $first_file = $this->upload->data(); 
    } 
    if ($_FILES['second_file']['name'] && $this->upload->do_upload('second_file')) { 
     $second_file= $this->upload->data(); 
    } 
0

Chỉ cần tôi hiểu từ thư viện $this->upload->do_upload('inputelementname') không phải là tên phần tử đầu vào. Nó sẽ là chìa khóa của mảng tập tin.

Vì vậy, trong bối cảnh này này nên làm việc

if($_FILES){ 
       $filecount=count($_FILES['addmediaelement']['name']); 
       for($i=0; $i<$filecount; $i++){ 
        $_FILES['mediaelement']['name']=$_FILES['addmediaelement']['name'][$i]; 
        $_FILES['mediaelement']['type']=$_FILES['addmediaelement']['type'][$i]; 
        $_FILES['mediaelement']['tmp_name']=$_FILES['addmediaelement']['tmp_name'][$i]; 
        $_FILES['mediaelement']['error']=$_FILES['addmediaelement']['error'][$i]; 
        $_FILES['mediaelement']['size']=$_FILES['addmediaelement']['size'][$i]; 

        $config['upload_path']=path/to/save/file; 
        $config['file_name']=filealternatename.extension; 
        $config['max_size']=MAXSIZE; //max size constant 
        $config['max_width']=MAXWIDTH; //max width constant 
        $config['max_height']=CMPMAXHEIGHT; //max height constant 
        $config['allowed_types']='jpg|png'; 

        if(!is_dir($config['upload_path'])){ 
         mkdir($config['upload_path'], 0775); 
        } 
        $this->upload->initialize($config); 
        $imageuploaderres[]=$this->upload->do_upload('mediaelement'); 
       } 
      } 
Các vấn đề liên quan