任何人都可以给我一个PHP的CURLFile类的例子吗?
我有一个非常简单的PHP代码将文件上传到远程服务器;我这样做的方式(正如其他一些解决方案中所建议的那样)是使用cUrl上传文件。
这是我的代码:
$ch = curl_init("http://www.remotesite.com/upload.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('fileupload' => '@'.$_FILES['Filedata']['tmp_name']));
echo curl_exec($ch);
服务器正在运行 PHP 5.5.0,并且似乎@filename在 PHP >= 5.5.0 中已被弃用,如描述中所述,因此,我收到此错误:CURLOPT_POSTFIELDS
Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in ...
有趣的是,除了基本的类概述之外,php.net 的这个类绝对没有任何内容。没有示例,没有方法或属性的描述。这里基本上是空白的。我知道这是一个全新的类,几乎没有文档,也很少在现实世界中使用,这就是为什么在Google上的搜索中或Stackoverflow上的这个类上几乎没有出现任何相关的东西。
我想知道是否有人使用过这个 CURLFile 类,并且可能帮助我,或者给我一个示例,说明如何使用它来代替代码中的@filename。
编辑:
我还想添加我的“上传.php”代码;此代码将与传统的@filename方法一起使用,但不再使用 CURLFile 类代码:
$folder = "try/";
$path = $folder . basename( $_FILES['file']['tmp_name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
echo "The file ". basename( $_FILES['file']['tmp_name']). " has been uploaded";
}
最终编辑:
想要为其他人添加最终/工作代码,寻找几乎没有文档记录的CURLFile类的类似工作示例...
curl.php(本地服务器)
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label> <input type="file" name="Filedata" id="Filedata" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
if ($_POST['submit']) {
$uploadDir = "/uploads/";
$RealTitleID = $_FILES['Filedata']['name'];
$ch = curl_init("http://www.remotesite.com/upload.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$args['file'] = new CurlFile($_FILES['Filedata']['tmp_name'],'file/exgpd',$RealTitleID);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
$result = curl_exec($ch);
}
?>
上载.php(远程服务器)
$folder = "try/";
$path = $folder . $_FILES['file']['name'];
if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
echo "The file ". basename( $_FILES['file']['name']). " has been uploaded";
}