La ruta de carga en Codeigniter devuelve “la ruta de carga no parece ser válida”

Ahora he probado la mayoría de las correcciones que he leído, la mayoría de ellas mencionan APPPATH, base_url (), ruta real y etc., pero realmente no sé por qué no funcionaron, para qué funcionó. yo es que he usado la ruta real, no una URL, sino la que tiene C: \ xampp \ htdocs … bla bla bla … ahora he leído un hilo que url y directorio no son lo mismo. . y upload_path solo acepta la ruta del directorio y me refiero a la ubicación real de la carpeta de cargas en el servidor, no a la URL. Ahora mi pregunta es ¿por qué APPPATH no funciona? Como lo sé la ruta del directorio real. pero cuando intenté mostrar es que devuelve solo “../applicaiton/” cuál es realmente la mejor ruta para usar en $ config [‘upload_path’] en upload.php, especialmente cuando se implementa en un servidor real. Realmente es una molestia encontrar la ruta del directorio de su carpeta de carga, NOTA No estoy usando el método initialize (), estoy poniendo mis configuraciones en config / upload.php

EDICIONES:

Tengo esto en un archivo separado … upload.php

<?php $config['upload_path'] ='./uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '5000'; $config['max_width'] = '1600'; $config['max_height'] = '1200'; 

y este es mi controlador

  if($this->upload->do_upload('image')) { //Did something here } else { //Did something for errors like display_errors() } 

y el resultado final es que muestra “la ruta de carga no parece ser válida” y también probé esta línea de código

Prueba 1:

 $config['upload_path'] ='./uploads/'; 

Prueba 2:

 $config['upload_path'] ='uploads/'; 

Prueba 3:

 $config['upload_path'] ='/admin/assets/uploads/'; 

Prueba 4:

 $config['upload_path'] ='./admin/assets/uploads/'; 

Prueba 5:

 $config['upload_path'] ='admin/assets/uploads/'; 

Lo único que funciona es esto.

  $config['upload_path'] ='C:\xampp\htdocs\practice\admin.abcgencon\admin\assets\uploads''; 

y usar la última parte como ruta es un poco desordenado, así que también probé APPPATH pero no funciona, también muestra “../application” ..

como @cryptic dijo que he publicado este fragmento de código.

Pregunta, ¿ APPPATH realpath y APPPATH separado?

En Codeigniter, APPPATH apunta a la carpeta de la aplicación.

Ejemplo : (coloque su carpeta fuera de la carpeta de la aplicación, solo diga si no lo hizo de esa manera) digamos la carpeta donde queremos colocar los archivos llamados imágenes

Entonces, lo que necesita hacer es combinar realpath( ) y APPPATH

 $image_path = realpath(APPPATH . '../images'); 

y pasalo a tu config

 $config['upload_path'] = $image_path; 

Cree su directorio de carga de archivos, por ejemplo, cargas fuera del directorio de la aplicación o en el directorio raíz de CI, y establezca la ruta de carga de la siguiente manera:

 $config['upload_path'] = realpath(FCPATH.'uploads'); 

FCPATH: Ruta al controlador frontal donde existe index.php (raíz de CI)

El código anterior se ejecuta tanto en el servidor como en el local.

Así es como se realiza la carga de archivos en CI

 $cat_image_name = $_FILES["cat_image"]["name"] ; //file uploading params $config['upload_path'] = './uploaded_files/categories'; $config['allowed_types'] = 'gif|jpg|png'; $config['file_name'] = $image_id."_ipad"; $config['remove_spaces'] = TRUE; //Loading Library - File Uploading $this->load->library('upload', $config); //Upload the image(Ipad) if (!empty($cat_image_name)) { $this->upload->do_upload('cat_image'); $data = array('upload_data' => $this->upload->data()); $category_image_ipad = $data['upload_data']['file_name']; $img_extension = $data['upload_data']['file_ext']; } 

prueba esto

 $config['upload_path'] = '../uploads/; 

Esta funcionando muy bien para mi

utilízalo:

 $config['upload_path'] = $_SERVER['DOCUMENT_ROOT']."/uploads/"; //$this->config->item('upload_path'); 

carga de archivos requiere un formulario multiparte Para ello, debe haber incluido un formulario de ayuda.

Vaya a la carpeta de configuración, haga clic en autoload y busque $autoload['helper'] = array(); y poner ‘forma’:

 $autoload['helper'] = array('form'); 

para el controlador:

$ config = array (

  'upload_path' => "./assets/", 'allowed_types' => "gif|jpg|png|jpeg", 'overwrite' => TRUE, 'max_size' => "2048000", 'max_height' => "768", 'max_width' => "1024" ); $this->load->library('upload', $config); if(!$this->upload->do_upload()){ $errors = array('error' => $this->upload->display_errors()); $post_image = 'noimage.jpg'; } else { $data = array('upload_data' => $this->upload->data()); $post_image = $_FILES['userfile']['name']; } $this->user_model->create_photo($post_image); redirect(''); } 

para modelo:

 public function create_photo($post_image){ $data = array( 'pri' => $this->input->post('price'), 'descrip' => $this->input->post('title'), 'post_image' => $post_image ); return $this->db->insert('table_name', $data); } 

Probado en Windows y Linux:

 $path = realpath("."); $path .= "/uploads/profile_images"; 

Aquí las cargas son el directorio de cargas en la raíz.

Es muy simple:

Simplemente copie su all $ config en el nuevo archivo php llamado upload.php y colóquelo en la carpeta cofig.

Tu camino funcionará bien.

Aquí está el contenido del archivo upload.php:

  

Pero también mantenga los datos de $ config en el controlador de archivo de subida. Por ejemplo:

 public function do_upload(){ $config['upload_path'] = 'uploads'; $config['allowed_types'] = 'gif|jpg|png|jpeg|html|pdf'; $config['max_size'] = 0; $config['max_width'] = 0; $config['max_height'] = 0; $config['file_ext_tolower'] = TRUE; $config['overwrite'] = FALSE; $config['max_filename'] = 0; $config['encrypt_name'] = TRUE; $config['remove_spaces'] = TRUE; $config['detect_mime'] = TRUE; $config['mod_mime_fix'] = TRUE; //Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class: $this->upload->initialize($config); if (!$this->upload->do_upload('userfile')) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } } 

Es simple…