I guess your path isn't correct, try this:
$url = 'http://jimbocho.ocrgrid.org/cgi-bin/weocr/submit_ocrad.cgi';
$file_name_with_full_path = '/home/example/dir/sample.jpeg';
$post = array('userfile'=>'@'.$file_name_with_full_path);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);
Update based on your comments, also try this:
$file_new = /path/to/your/file.jpg
$cmd="curl -F userfile=$file_new \
-F outputencoding=\"utf-8\" \
F outputformat=\"txt\" \
http://maggie.ocrgrid.org/cgi-bin/weocr/ocr_scene.cgi >result.txt"
$result = shell_exec($cmd);
print_r($result);
Note: You don't need to set CURLOPT_POST 1
if you're using CURLOPT_POSTFIELDS
, curl do that for you automagically.
Curl also sets the Content-Type: multipart/form-data
, if the post content is an array, that's your case, no need for that too.
CURLOPT_POSTFIELDS
The full data to post in a HTTP "POST" operation. To post a file,
prepend a filename with @ and use the full path. The filetype can be
explicitly specified by following the filename with the type in the
format ';type=mimetype'. This parameter can either be passed as a
urlencoded string like 'para1=val1¶2=val2&...' or as an array with
the field name as key and field data as value. If value is an array,
the Content-Type header will be set to multipart/form-data. As of
PHP 5.2.0, value must be an array if files are passed to this option
with the @ prefix. As of PHP 5.5.0, the @ prefix is deprecated and
files can be sent using CURLFile. The @ prefix can be disabled for
safe passing of values beginning with @ by setting the
CURLOPT_SAFE_UPLOAD option to TRUE.