我有一个使用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>
Run Code Online (Sandbox Code Playgroud)
那么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!";
}
?>
Run Code Online (Sandbox Code Playgroud)
是否有任何可能的方法通过命令行或shell脚本使用curl通过此技术发送文件?也就是说:
curl -f "@/path/to/my/file;type=text/html" http://mywebserver.com/uploads.php
Run Code Online (Sandbox Code Playgroud)
那个特定的行给了我:"卷曲:(22)连接到:: 1失败:权限被拒绝"虽然网站上没有密码等我认为这是可能的,但我的语法错了?
Ada*_*son 10
我认为你希望论证是一个资本F(对于Form).小写f用于失败,并返回错误代码22.严重的是,它在手册中!
-f, - 失败
(HTTP)服务器错误无提示失败(根本没有输出).这主要是为了更好地启用脚本等以更好地处理失败的尝试.在正常情况下,当HTTP服务器无法传递文档时,它会返回一个HTML文档(通常也会描述原因和更多).该标志将阻止卷曲输出并返回错误22.
该方法不是故障安全的,并且存在非成功响应代码将会漏掉的情况,尤其是涉及认证时(响应代码401和407).
-F, - 表格
(HTTP)这使curl模拟用户按下提交按钮的填写表单.这会根据RFC 2388使用Content-Type multipart/form-data导致curl POST数据.这样可以上传二进制文件等.要强制'content'部分为文件,请在文件名前加上@符号.要从文件中获取内容部分,请在文件名前加上符号<.@和<之间的区别在于@使文件作为文件上传附加到帖子中,而<生成文本字段并从文件中获取该文本字段的内容.
此外,您还没有命名您的文件变量.我想你想要:
curl -F "uploadedfile=@/path/to/my/file" http://mywebserver.com/uploads.php
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10635 次 |
| 最近记录: |