2011-08-16 11 views

Odpowiedz

5

Rzeczywiście można używać rodzimych File Upload Class ułatwienie przesłane CodeIgniter jest z Phil's Rest-Server tak:

/** 
* 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,

istnieje inne rozwiązanie tutaj: FIle upload from a rest client to a rest server

Ale żadna z tych rozwiązań nie pracował mnie.

Jednak to się udało; faktycznie pracował.

Po pierwsze, nie był pewien, czy mój plik sięgał metodę, więc zmieniłem linię odpowiedzi na:

function enter_post() 
    { 

     $this->response($_FILES); 
    } 

Uwaga, jest to świetny sposób, aby przetestować swoje metody resztę.

Można również wyjście:

$ this-> odpowiedź ($ _ SERVER);

i

$ this-> odpowiedź ($ _ POST);

itp

Mam następujące wyjściowe JSON:

{ "file": { "name": "camel.jpg", "type": "application/octet- stream "," tmp_name ":"/tmp/phpVy8ple "," error ": 0," size ": 102838}}

Więc wiedziałem, że mój plik tam był.

Potem zmieniłem metodę wyszukiwania i przenoszenia pliku.Użyłem skryptu wspólnego dostępu do plików, aby uzyskać plik z lokalizacji tymczasowej i przenieść go do nowej lokalizacji:

$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

świetna odpowiedź mr.ssaltman, naprawdę healpfull –

2

spróbuj tego kodu, obraz jest zapisywany z stemplem czasowym i jej przedłużenia ..

$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

Poniżej konfiguracja ścieżki obrazu i ich atrybutów do ustawiania regulatora form.php w postaci funkcji()

$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) 

{ $ nazwach = $ to-> fu llimage_upload1 ($ this-> upload-> data ($ imgfile)); return $ nazwa pliku; }

Jest to funkcja definiowania przesłać kopię obrazu do różnych folderach jak małe, miniatury funkcja fullimage_upload1 ($ dane) { $ this-> Load> Biblioteka ('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']; 
} 
Powiązane problemy