cURL简单file upload – 417期望失败

我有一个简单的file uploadpost与cURL的问题…我做了这么多次,但在这种情况下,我总是从服务器“417期望失败”。 当我尝试使用浏览器发布时,它可以正常工作,但不能使用cURL。

这是我的configuration:

我的简单testing表单工作:

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

这里的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"; } ?> 

我的cURL脚本(image_upload.sh)看起来像这样:

 #!/bin/sh file=$1 result=$(curl -s -L -F "userfile=@$file;type=application/octet-stream;" "http://images.example.com/image_upload.php") echo $result 

这里的服务器标题:

 > 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 

我不知道错误在哪里,也许你可以认出来。

也可以使用set opt header设置来修复:

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

http://www.khattam.info/417-expectation-failed-in-php-curl-while-submitting-multi-part-forms-2011-04-14.html

当您在HTTP 1.1模式下运行的代理服务器的后面时,会发生这种情况,客户端在HTTP 1.0中运行。 在curl命令行中,可以在参数中添加--http1.0来解决问题

添加到你的lighttpd配置:server.reject-expect-100-with-417 =“disable”

重新启动lighttpd。 欢呼:)