4

经过几个小时的研究,我无法解决 PHP 和 cURL 的问题。

当我尝试直接从表单发送文件时,卷曲工作正常。

<form method="post" action="" enctype="multipart/form-data">
<input name="file" type="file" /> <br />
<input name="submit" type="submit" value="Upload" />
</form>

<?php
$temp = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];

$post = array (
    'file' => '@'. $temp
);

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
$exec = curl_exec ($ch);
curl_close ($ch);
?>

上面的代码工作正常。当我尝试使用您的表单时,文件已正确发送。

我的问题是我需要发送已经在服务器上的文件。

我尝试使用文件“C:/xampp/htdocs/test/photos.zip”的完整路径,但由于某种原因,它不起作用。

$post = array (
    'file' => '@C:/xampp/htdocs/test/photos.zip'
);

有谁知道我如何发送已经发送到服务器的文件?

编辑:

上传.php(服务器)

<?php
error_reporting( E_ALL );
$upload = $_FILES['file'];
move_uploaded_file( $upload['tmp_name'], 'photos.zip');
?>

myuploadtest.php ( 本地主机 )

<form action="" method="post" enctype="multipart/form-data">
<input name="file" type="file" /><br />
<input name="submit" type="submit" value="Upload" />
</form>

<?php
$temp = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];

$post = array(
    'file' => '@'.$temp
);

$url = "http://www.mysite.com/upload.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$exec = curl_exec($ch);
curl_close($ch);
?>

上传curl.php(本地主机)

<?php
$post = array(
    'file' => '@C:/xampp/htdocs/test/photos.zip'
);

$url = "http://www.mysite.com/upload.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$exec = curl_exec($ch);
curl_close($ch);
?>

提前致谢。

4

2 回答 2

1

要发送已经在服务器上的文件,请在服务器上找到它的完整路径:

$post = array(
    'file' => '@'. $_FILES['file']['tmp_name']
);

这正是你最初所做的。

于 2012-12-18T09:37:29.740 回答
1

您可能想尝试以下方法:

  • 使用相对路径,即给出相对于您正在运行的 php 脚本的路径名。

  • 在上面的代码中,我认为您缺少 $url 的声明。

  • 我不太明白Does anyone know how I do to send files that have already been sent to the server? 您要将文件发送到哪个服务器?(本地主机?)

如果相对路径不起作用,您能否分享您收到的错误消息?

于 2012-06-17T14:50:47.167 回答