【发布时间】:2012-02-25 14:31:24
【问题描述】:
我在使用 cURL 的简单文件上传帖子时遇到问题... 我做了很多次,但在这种情况下,我总是从服务器收到“417 Expectation Failed”。 当我尝试使用我的浏览器发布时,它可以 100% 工作,但不能使用 cURL。
这是我的配置:
我的简单测试表格有效:
<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
我不知道错误在哪里,也许你能认出来。
【问题讨论】:
-
你能告诉我们函数体
move_uploaded_file。 -
move_uploaded_file 是 php 内置函数,请参阅:link
-
感谢您的回复,但我得到了相同的结果。 :( 有点奇怪,通过 WebForm 可以工作,但不能通过 cURL...
-
[SOLVED]: 通过将 -H "Expect:" 添加到 cURL Headers 将解决此问题。