任何人都可以给我一个PHP的CURLFile类的例子吗? [英] Can anyone give me an example for PHP's CURLFile class?

查看:4758
本文介绍了任何人都可以给我一个PHP的CURLFile类的例子吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个非常简单的PHP代码将文件上传到远程服务器;我做的方式(在一些其他解决方案中已建议)是使用cUrl来上传文件。

I had a very simple PHP code to upload a file to a remote server; the way I was doing it (as has been suggested here in some other solutions) is to use cUrl to upload the file.

这是我的代码:

$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 描述,因此,我收到此错误:

The server is running PHP 5.5.0 and it appears that @filename has been deprecated in PHP >= 5.5.0 as stated here under the CURLOPT_POSTFIELDS description, and therefore, I'm getting this error:

Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in ... 

有趣的是, .net除了基本类概述。没有示例,没有方法或属性的描述。这基本上是空白的这里。我知道这是一个全新的类,很少或没有文档和很少的真实世界的使用,这就是为什么几乎没有什么相关的在Google上的搜索或在这个类上的Stackoverflow。

Interestingly, there is absolutely nothing about this Class on php.net aside from a basic class overview. No examples, no description of methods or properties. It's basically blank here. I understand that is a brand new class with little to no documentation and very little real-world use which is why practically nothing relevant is coming up in searches on Google or here on Stackoverflow on this class.

我想知道是否有任何人使用这个CURLFile类,并可能帮助我或给我一个例子,在我的代码中使用它替代@filename。

I'm wondering if there's anyone who has used this CURLFile class and can possibly help me or give me an example as to using it in place of @filename in my code.

编辑:

我想添加我的upload.php代码;此代码将使用传统的@filename方法,但不再使用CURLFile类代码:

I wanted to add my "upload.php" code as well; this code would work with the traditional @filename method but is no longer working with the CURLFile class code:

$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类别添加最终/工作代码...

Wanted to add Final / Working code for others looking for similar working example of the scarcely-documented CURLFile class ...

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);       
}
?>

upload.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";
} 


推荐答案

代码的RFC: https://wiki.php.net/rfc/curl-file-上传

curl_setopt($curl_handle, CURLOPT_POST, 1);
$args['file'] = new CurlFile('filename.png', 'image/png', 'filename.png');
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args);

你也可以使用看似无意义的函数 curl_file_create(string $ filename [ string $ mimetype [,string $ postname]])如果你有恐惧症创建对象。

You can also use the seemingly pointless function curl_file_create( string $filename [, string $mimetype [, string $postname ]] ) if you have a phobia of creating objects.

curl_setopt($curl_handle, CURLOPT_POST, 1);
$args['file'] = curl_file_create('filename.png', 'image/png', 'filename.png');
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args);

这篇关于任何人都可以给我一个PHP的CURLFile类的例子吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆