2011-08-16 12 views

Respuesta

5

En realidad se puede utilizar nativas File Upload Class para facilitar las subidas de CodeIgniter con Phil's Rest-Server así:

/** 
* REST API Upload using native CI Upload class. 
* @param userfile - multipart/form-data file 
* @param submit - must be non-null value. 
* @return upload data array || error string 
*/ 
function upload_post(){ 
    if(! $this->post('submit')) { 
     $this->response(NULL, 400); 
    } 
    $this->load->library('upload'); 

    if (! $this->upload->do_upload()) { 
     $this->response(array('error' => strip_tags($this->upload->display_errors())), 404); 
    } else { 
     $upload = $this->upload->data(); 
     $this->response($upload, 200); 
    } 
} 
9

Ok,

Hay otra solución a este problema: FIle upload from a rest client to a rest server

Pero ninguna de estas soluciones trabajado para yo.

Sin embargo, esto es lo que funcionó; realmente funcionó.

En primer lugar, yo no estaba seguro de si mi archivo estaba alcanzando el método, así que cambié la línea de respuesta a:

function enter_post() 
    { 

     $this->response($_FILES); 
    } 

Nota, esta es una gran manera de probar sus métodos REST.

Usted también puede dar salida:

$ this-> respuesta ($ _ SERVER);

y

$ this-> respuesta ($ _ POST);

etc.

me dio la siguiente salida JSON:

{ "archivo": { "name": "camel.jpg", "type": "application/octet stream "," tmp_name ":"/tmp/phpVy8ple "," error ": 0," tamaño ": 102838}}

Así que sabía que mi archivo estaba allí.

Luego cambié el método para buscar y mover el archivo.Solía ​​escritura de acceso de archivo común para obtener el archivo desde su ubicación temporal y moverlo a una nueva ubicación:

$uploaddir = '/home/me/public_html/uploads/'; 

    $uploadfile = $uploaddir . basename($_FILES['file']['name']); 

    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { 
     $data['status'] = 'uploaded';  
      } else { 
     $data['status'] = 'failed';   
      } 
+1

gran respuesta mr.ssaltman, really healpfull –

2

probar este código, la imagen se guarda con sello de tiempo y su extensión ..

$uploaddir = 'uploads/'; 
    $path = $_FILES['image_param']['name']; 
    $ext = pathinfo($path, PATHINFO_EXTENSION); 
    $user_img = time() . rand() . '.' . $ext; 
    $uploadfile = $uploaddir . $user_img; 
    if ($_FILES["image_param"]["name"]) { 
     if (move_uploaded_file($_FILES["image_param"]["tmp_name"],$uploadfile)) { 
echo "success"; 
    } 
0

siguiente es la configuración de ruta de la imagen y sus respectivos atributos de ajuste en el controlador form.php en forma de función()

$config['upload_path']    = 'uploads/images/full'; 
    $config['allowed_types']   = 'gif|jpg|png'; 
    $config['max_width']    = '6000'; 
    $config['max_height']    = '6000'; 
    $config['encrypt_name']    = true; 
    $this->load->library('upload', $config); 
    $this->upload->initialize($config); 
    $uploaded    = $this->upload->do_upload($imgfile); 
    if($uploaded) 

{ $ nombres de archivo = $ this-> fu llimage_upload1 ($ this-> upload-> data ($ imgfile)); return $ nombres de archivo; }

Esta es la función que define cargar la copia de la imagen a las diferentes carpetas como pequeñas, miniaturas fullimage_upload1 función ($ data) { $ this-> load-> library ('image_lib');

//this is the larger image 
    $config['image_library'] = 'gd2'; 
    $config['source_image'] = 'uploads/images/full/'.$data['file_name']; 
    $config['new_image'] = 'uploads/images/small/'.$data['file_name']; 
    $config['maintain_ratio'] = TRUE; 
    /*$config['width'] = 600; 
    $config['height'] = 500;*/ 
    $this->image_lib->initialize($config); 
    $this->image_lib->resize(); 
    $this->image_lib->clear(); 

    //cropped thumbnail 
    $config['image_library'] = 'gd2'; 
    $config['source_image'] = 'uploads/images/full/'.$data['file_name']; 
    $config['new_image'] = 'uploads/images/thumbnails/'.$data['file_name']; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 300; 
    $config['height'] = 258; 
    $this->image_lib->initialize($config); 
    $this->image_lib->resize(); 
    $this->image_lib->clear(); 

    return $data['file_name']; 
} 
Cuestiones relacionadas