CodeIgniter'daki JavaScript Türlü Dosya Adları değiştirildi olsun

1 Cevap php

Ben bir çoklu resim upload form var, ve aşağıdaki kod yüklemek için iyi çalışıyor. Ben veritabanına veritabanı için dosya isimlerini kaydetmek gerekiyor, ama ben düzgün bunu nasıl anlamaya olamaz.

uploadform.php :

 echo form_open_multipart('gallery/upload');
  <input type="file" name="photo" size="50" />
  <input type="file" name="thumb" size="50" />  
  <input type="submit" value="Upload" />
 </form>

gallery_model.php

 function multiple_upload($upload_dir = 'uploads/', $config = array())
 {

  /* Upload */  

     $CI =& get_instance();
     $files = array();

     if(empty($config))
     {
         $config['upload_path']   = realpath($upload_dir);
         $config['allowed_types'] = 'gif|jpg|jpeg|jpe|png';
         $config['max_size']      = '2048';
     }

        $CI->load->library('upload', $config);

        $errors = FALSE;

        foreach($_FILES as $key => $value)
        {            
            if( ! empty($value['name']))
            {
                if( ! $CI->upload->do_upload($key))
                {                                           
                    $data['upload_message'] = $CI->upload->display_errors(ERR_OPEN, ERR_CLOSE); // ERR_OPEN and ERR_CLOSE are error delimiters defined in a config file
                    $CI->load->vars($data);

                    $errors = TRUE;
                }
                else
                {
                    // Build a file array from all uploaded files
                    $files[] = $CI->upload->data();
                }
            }
        }


        // There was errors, we have to delete the uploaded files
        if($errors)
        {                    
            foreach($files as $key => $file)
            {
                @unlink($file['full_path']);    
            }                    
        }
        elseif(empty($files) AND empty($data['upload_message']))
        {
            $CI->lang->load('upload');
            $data['upload_message'] = ERR_OPEN.$CI->lang->line('upload_no_file_selected').ERR_CLOSE;
            $CI->load->vars($data);
        }
        else
        {
            return $files;


        }



        /* -------------------------------
        Insert to database */

        // problem is here, i need file names to add db. 
        // if there is already same names file at the folder, it rename file itself. so in such case, I need renamed file name :/



    }    
}

1 Cevap

Sadece veritabanı işlemleri için model tutmalı. Yükleme işleme ve dosya hareketli tüm kontrolör yapılmalıdır. Model veritabanındaki fotoğraf hakkında bir kayıt eklemek için vardır ve bunun hakkında.

Ve sorunun bir print_r($files) yapmak ve ne içerdiğini görmek için bir tepki olarak. Bu isimleri ile olmalıdır. Muhtemelen olacak ARTMANIA gibi bir şey yukarıda söyledi: $files[0]['file_name']. Bir foreach böyle inşa ile $ dosyaları dizi döngü gerekir:

foreach($files as $file) {
  $file_name = $file['file_name'];
}

Siz aynı şekilde dosya hakkında tüm diğer verileri alabilirsiniz. CodeIgniter manuel diyor $this->upload->data():

This is a helper function that returns an array containing all of the data related to the file you uploaded. Here is the array prototype:

Array
(
    [file_name]    => mypic.jpg
    [file_type]    => image/jpeg
    [file_path]    => /path/to/your/upload/
    [full_path]    => /path/to/your/upload/jpg.jpg
    [raw_name]     => mypic
    [orig_name]    => mypic.jpg
    [file_ext]     => .jpg
    [file_size]    => 22.2
    [is_image]     => 1
    [image_width]  => 800
    [image_height] => 600
    [image_type]   => jpeg
    [image_size_str] => width="800" height="200"
)

Fore daha fazla bilgi check out the manual.