所以经过研究,我发现可以通过cURL将文件发送到另一个页面。以下是执行发送部分的代码:
$url = 'http://someabc.com/api.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
$postData = array(
'array' => "@".realpath('array.txt'),
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($ch);
echo $response;
if(isset($_POST['array']))
{
$string = $_POST['array'];
echo $string;
}
else
{
echo 'Not found';
}
当我运行包含cURL请求的页面时,我在页面上打印Not found
。
这是否意味着我以错误的方式捕获数据?如果是,那么从array.txt
页面获取api.php
的内容的方法是什么?
按照Jon的建议使用$_FILES
后,我收到了以下数组:
Array
(
[name] => array.txt
[type] => application/octet-stream
[tmp_name] => /tmp/phpPQZXf9
[error] => 0
[size] => 77413
)
现在我尝试使用以下方法获取此文件的内容:
$tmp = $_FILES['array'];
$string = file_get_contents($tmp['name']['tmp_name']);
但得到了错误Warning: file_get_contents(a) [function.file-get-contents]: failed to open stream: No such file or directory
,这意味着我没有正确引用该文件。我现在哪里出错了?
答案 0 :(得分:2)
对于更新前的第一部分,存在问题,因为将文件发布到页面时,无论发生的方式如何(即<input type='file />
,curl
等),它始终存在通过$_FILES
变量可以使用PHP,在你的情况下,这是一个关联数组,应该是$_FILES['array']
,包含临时文件位置的信息。该数组应类似于:
Array
(
[array] => Array
(
[name] => array.txt
[type] => encoding type
[tmp_name] => /tmp/path/file
[error] => 0 (if no error)
[size] => [filesize]
)
)
从那里,要访问该文件,您需要将其从tmp
目录移动到您有权访问的目录。这是通过move_uploaded_file
完成的。使用它的一个例子是:
$upDir = 'uploads/';
move_uploaded_file($_FILES['array']['tmp_name'], $upDir. $_FILES['array']['name']);
从那里开始,文件将在uploads/array.txt
中php文件的相对路径下的服务器上,你可以在那里用它来做。 ^^
答案 1 :(得分:1)
如果您尝试发布文件,数据将在$ _FILES上提供。您可以使用以下代码进行检查
var_dump($_FILES);
如果您从$ _FILES获取文件信息,那么您可以将“if(isset($ _ POST ['array']))”替换为
if(count($_FILES))
{
...
}
else
{
echo 'Not found';
}
访问文件内容尝试:
$tmp = $_FILES['array'];
$string = file_get_contents($tmp['tmp_name']);