2011-08-16 16 views
7

मैं फिल्स RestServer (लिंक देखें) Codeigniter में उपयोग करते हुए एक API कोडिंग कर रहा हूँ। मुझे एपीआई के माध्यम से छवियों को अपलोड करने का एक तरीका चाहिए। मैं उसे कैसे कर सकता हूँ? यह बस के रूप में सही हेडर (क्या हेडर का उपयोग करने के लिए) के साथ एक पोस्ट अनुरोध बनाने के रूप में सरल है?कोडनिर्देशक और रेस्टसेवर। छवियों को कैसे अपलोड करें?

https://github.com/philsturgeon/codeigniter-restserver

सभी इनपुट के लिए शुक्रगुज़ार!

उत्तर

0

इसे यहाँ कैसे अमेज़न S3 करता है पर देख रहे हैं में http://www.anyexample.com/programming/php/uploading_files_to_amazon_s3_with_rest_api.xml

यह ग्राहक के पक्ष आप फ़ाइल प्रकार को परिभाषित और फिर file_get_contents($file_path) साथ एक चर में यह लोड और फिर में परिभाषित उचित हेडर के साथ भेज देते हैं पर की तरह दिखता है उदाहरण।

फिर सर्वर पर मुझे लगता है कि यह फ़ाइल को सहेजने के अनुरोध के साथ file_put_contents() का उपयोग करेगा।

5

आप वास्तव में इस तरह Phil's Rest-Server साथ CodeIgniter के देशी File Upload Class की सुविधा के लिए अपलोड का उपयोग कर सकते हैं:

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

ठीक है,

यहाँ एक और समाधान है: FIle upload from a rest client to a rest server

लेकिन इनमें से कोई समाधान के लिए काम किया मुझे।

बहरहाल, यह क्या काम किया है; वास्तव में काम किया।

सबसे पहले, मुझे यकीन है कि अगर मेरी फाइल विधि तक पहुंच गया था नहीं था, इसलिए मैं के जवाब लाइन बदल:

function enter_post() 
    { 

     $this->response($_FILES); 
    } 

ध्यान दें, यह एक शानदार तरीका अपने बाकी तरीकों का परीक्षण करने के लिए है।

भी कर सकते हैं उत्पादन:

$ this-> प्रतिक्रिया ($ _ सर्वर);

और

$ this-> प्रतिक्रिया ($ _ पोस्ट);

आदि

मुझे मिल निम्नलिखित JSON उत्पादन:

{ "फ़ाइल": { "नाम": "camel.jpg", "type": "अनुप्रयोग/octet- धारा "," tmp_name ":"/tmp/phpVy8ple "," त्रुटि ": 0," आकार ": 102,838}}

तो मुझे पता था कि मेरी फाइल नहीं थी।

मैंने फ़ाइल को खोजने और स्थानांतरित करने के लिए विधि को बदल दिया।मैं अपने अस्थायी स्थान से फाइल हो और एक नए स्थान पर ले जाने के लिए आम फ़ाइल पहुँच स्क्रिप्ट का प्रयोग किया:

$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

महान जवाब mr.ssaltman, वास्तव में healpfull –

2

इस कोड की कोशिश, छवि समय स्टाम्प और उसके विस्तार के साथ सहेजा जाता है ..

$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

के बाद छवि पथ और उनके संबंधित विशेषताओं के रूप में नियंत्रक Form.php में स्थापित करने() फ़ंक्शन

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

{ $ फ़ाइल नाम = $ this-> फू के विन्यास है llimage_upload1 ($ this-> upload-> डेटा ($ imgfile)); $ फ़ाइल नाम लौटाएं; }

इस समारोह को परिभाषित छोटे रूप में विभिन्न फ़ोल्डर के छवि कॉपी अपलोड, थंबनेल समारोह fullimage_upload1 ($ डेटा) { $ this-> load-> पुस्तकालय ('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']; 
} 
संबंधित मुद्दे