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="http://images.example.com/image_upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" size="50">
<input type="submit" name="submit">
</form>
here the image_upload.php:
<?php
$uploaddir = '/var/www/images.example.com/images/';
$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 (image_upload.sh) looks like this:
#!/bin/sh
file=$1
result=$(curl -s -L -F "userfile=@$file;type=application/octet-stream;" "http://images.example.com/image_upload.php")
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: images.example.com
> 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.
The HTTP 417 Expectation Failed client error response code indicates that the expectation given in the request's Expect header could not be met.
The HTTP Status Code 417 means that the server cannot meet the requirements of the Expect request-header field.
add this to your lighttpd config: server.reject-expect-100-with-417 = "disable"
restart lighttpd. cheers :)
This happens when you are behind a proxy which is running in HTTP 1.1 mode where as the client is running in HTTP 1.0. In curl command line you can add --http1.0
in the arguments to solve the issue
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With