需要php代码来存储用wget上传的文件

需要php代码来存储用wget上传的文件,php,bash,http,post,wget,Php,Bash,Http,Post,Wget,我需要从命令行上传服务器上的文件。我下一步要做: wget-d--post file=links.txthttp://bearnova.com/upload_file.php 这里是upload_file.php。下面的代码当然不起作用: <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Uplo

我需要从命令行上传服务器上的文件。我下一步要做:

wget-d--post file=links.txthttp://bearnova.com/upload_file.php
这里是upload_file.php。下面的代码当然不起作用:

<?php
if ($_FILES["file"]["error"] > 0) {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];

  move_uploaded_file($_FILES["file"]["tmp_name"],
  "upload/" . $_FILES["file"]["name"]);
  echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}
?>

Wget执行HTTP POST以发送文件。 我还听说过$\u POST、$HTTP\u RAW\u POST\u DATA和file\u get\u contents(php://input) 我根本不是一个php的家伙。有人能帮我找到一个有效的解决方案吗?
谢谢。

请检查是否使用您定义的html格式

<form method="post" action="upload_file.php" enctype="multipart/form-data">
    <input type="file" name="file" id="file"/>
</form>

如果它没有定义,那么它也可能不工作。
同样,对于文件字段,需要此enctype格式。

wget
不能用于文件上载。文件上载要求内容类型为
multipart/form data
,但
wget
不支持此功能。从手册页:

Wget目前不支持传输POST数据的
多部分/表单数据”;只有
application/x-www-form-urlencoded'

--post file
只发布普通表单字段,它只从文件内容中获取值

你可以用
curl
来做你想做的事情

curl-F file=@links.txthttp://bearnova.com/upload_file.php

我通过以下方式获取文件内容:

<?php $postdata = file_get_contents("php://input"); ?>

$HTTP_RAW_POST_DATA-与上面相同,但取决于php.ini(在我的示例中为空)


我需要将其存储在服务器端的文件中,似乎文件名也没有发送,但这应该不是什么大问题。

这就是使用wget的方法

wget -d --post-data="filedata=`base64 links.txt`&filename=links.txt" http://bearnova.com/upload_file.php
您可以从upload_file.php获取文件名和文件数据,并执行任何您想要的操作

<?php
    $filename = $_POST['filename'];
    $filedata = base64_decode($_POST['filedata']);
?>


wget命令不会将文件发送到服务器。它使用links.txt文件中的数据发送post请求$\u post、$HTTP\u RAW\u post\u数据如何?我可以从其中一个文件中读取文件内容吗?下面发送的链接()很好地解释了如何使用wget发送文件。哪一点你不能理解?我不明白为什么我们需要做base64.encodestring然后解码它。此外,我根本不需要python部分,因为您需要将文件内容转换为字符串,以便wget可以将其作为post变量发送。如果不想使用python,也可以使用bash。我现在正在写答案……他没有HTML表单。他正在使用
wget
提交表格。正如巴尔马所说,我没有表格;)谢谢,但我没有卷发。我需要用wget来完成这项工作。文档中说wget不能发送文件附件。你为什么不能安装curl?再说一遍。我在OM2P接入点上,它只有wget和scp。没有curl、ftp、sftp、tftp、wput等,我需要从shell脚本发送日志。那么我猜你运气不好。这个问题已经解决过一次,但我不在服务器端,我不知道解决方法。所以我相信这是可以做到的。这里有一个例子:是的,这很好,除了我在AP上没有base64;)