Chris Chris - 6 months ago 16
Linux Question

cURL Simple File Upload - 417 Expectation Failed

I have a problem with a simple file upload post with cURL...
I did it so many times but in this case I always get "417 Expectation Failed" from server.
When I try to post with my browser it works 100% but with cURL not.

That's my configuration:

My simple test form that works:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" size="50">
<input type="submit" name="submit">

here the image_upload.php:

$uploaddir = '/var/www/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";

my cURL script ( looks like this:



result=$(curl -s -L -F "userfile=@$file;type=application/octet-stream;" "")

echo $result

and here the server headers:

> POST /image_upload.php HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.1.4 libidn/1.8 libssh2/0.18
> Host:
> Accept: */*
> Content-Length: 579
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------e237975526cf
< HTTP/1.1 417 Expectation Failed
< Connection: close
< Content-Length: 0
< Date: Thu, 02 Feb 2012 21:29:22 GMT
< Server: lighttpd/1.4.19

I don't know where the error is, maybe you can recognize it.

ram ram

Can also be fixed using set opt header setting:

curl_setopt($curl,CURLOPT_HTTPHEADER,array("Expect:  "));