Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件上传(通过命令行上的Curl)_Php_Curl - Fatal编程技术网

PHP文件上传(通过命令行上的Curl)

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

使用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: <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