PHP文件上传(通过命令行上的Curl)
使用PHP将文件上载到我的服务器时,我遇到了一个噩梦,但是使用此简单的HTML表单时,它似乎可以工作:PHP文件上传(通过命令行上的Curl),php,curl,Php,Curl,使用PHP将文件上载到我的服务器时,我遇到了一个噩梦,但是使用此简单的HTML表单时,它似乎可以工作: <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: <
<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>
这一行给了我:“curl:(22)无法连接到::1:权限被拒绝”虽然网站上没有密码等。我认为这是可能的,但我的语法错了?我想你希望参数是大写的
F
(用于表单)。小写的f
表示失败,返回错误代码22。说真的,手册上有
-f、 --失败
(HTTP)在服务器错误时以静默方式失败(根本没有输出)。这是
主要是为了更好地启用脚本等来更好地处理失败的
尝试。在正常情况下,HTTP服务器无法交付
文档中,它返回一个HTML文档,说明这一点(通常
描述了原因和更多)。此标志将阻止curl输出
然后返回错误22
这种方法不是故障安全的,在某些情况下
不成功的响应代码将漏掉,尤其是在
涉及身份验证(响应代码401和407)
-F、 --形式
(HTTP)这让curl模拟一个填充表单,其中用户
按下提交按钮。这会导致curl使用
内容类型多部分/表单数据符合RFC 2388。这使得
上传二进制文件等,强制“内容”部分成为
文件,在文件名前面加上@号。只是为了获取内容
文件的一部分,在文件名前加上符号,您还应通过
-X'post'
将方法设置为post。使用此脚本时要非常小心,因为它会上载任何类型的文件,并且是一个安全漏洞(脚本可以直接上载到服务器,然后使用浏览器执行)。。。因此,需要额外的保护编码!谢谢,不过还是不行。(这一次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!";
}
?>
curl -f "@/path/to/my/file;type=text/html" http://mywebserver.com/uploads.php
curl -F "uploadedfile=@/path/to/my/file" http://mywebserver.com/uploads.php