I created a rest server using the codeigniter rest server library created by PhilSturgeon :
github.com/philsturgeon/codeigniter-restserver
Now, I am using Codeignitor rest client :
github.com/philsturgeon/codeigniter-restclient
to get
/post
data from/to the rest server and am successfully able to get/post normal data.
What is the best way to post image files to the rest server from the rest client ?
Also, how can someone can access the API and perform all get/post operation from C# .NET assuming the rest server uses digest authentication ? [any library available ?]
Simple Rest Post service to upload & store a file from any Rest client
public function product_post()
{
$uploaddir = './uploads/products/';
$file_name = underscore($_FILES['file']['name']);
$uploadfile = $uploaddir.$file_name;
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
$dataDB['status'] = 'success';
$dataDB['filename'] = $file_name;
} else {
$dataDB['status'] = 'failure';
}
$this->response($dataDB, 200);
}
As Amit has suggested, you can send the contents of a file file_get_contents('foo.jpg')
or you could do something more true to the spec and do something like:
POST /images
Content-Type: image/jpeg
Then for the body you just set the contents of the image (or whatever type of file you're firing off).
You can then pick that up in your PHP with:
file_get_contents('php://input');
That will have the contents of your image, so you can save it wherever.
I was actually able to use CodeIgniters native File Upload class to solve this same issue: https://stackoverflow.com/a/11163068/1188523
These solutions did not work for me. However, I posted my solution here:
Codeigniter and RestServer. How to upload images?
After searched for more than 1 days, finally this is what worked for me
public function upload_post()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = '*';
$this->load->library('upload');
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('file'))
{
$error = array('error' => $this->upload->display_errors());
print_r($error);
// $this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
print_r($data);
// $this->load->view('upload_success', $data);
}
}