<html><body> <form enctype="multipart/form-data" action="uploads.PHP" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> Choose a file to upload: <input name="uploadedfile" type="file" /><br /> <input type="submit" value="Upload File" /> </form>
那么PHP就是:
<?PHP $target_path = "uploads/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'],$target_path)) { echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded"; } else{ echo "There was an error uploading the file,please try again!"; } ?>
是否有任何可能的方法通过命令行或shell脚本使用curl通过此技术发送文件?也就是说:
curl -f "@/path/to/my/file;type=text/html" http://mywebserver.com/uploads.PHP
那个特定的行给了我:“卷曲:(22)连接到:: 1失败:权限被拒绝”虽然网站上没有密码等我认为这是可能的,但我的语法错了?
-f,–fail
(HTTP) Fail silently (no output at all) on server errors. This is
mostly done to better enable scripts etc to better deal with Failed
attempts. In normal cases when an HTTP server fails to deliver a
document,it returns an HTML document stating so (which often also
describes why and more). This flag will prevent curl from outputting
that and return error 22.This method is not fail-safe and there are occasions where
non-successful response codes will slip through,especially when
authentication is involved (response codes 401 and 407).-F,–form
(HTTP) This lets curl emulate a filled-in form in which a user has
pressed the submit button. This causes curl to POST data using the
Content-Type multipart/form-data according to RFC 2388. This enables
uploading of binary files etc. To force the ‘content’ part to be a
file,prefix the file name with an @ sign. To just get the content
part from a file,prefix the file name with the symbol <. The
difference between @ and < is then that @ makes a file get attached in
the post as a file upload,while the < makes a text field and just get
the contents for that text field from a file.
此外,您还没有命名您的文件变量.我想你想要:
curl -F "uploadedfile=@/path/to/my/file" http://mywebserver.com/uploads.PHP