任何人都可以给我一个PHP的CURLFile类的例子吗? [英] Can anyone give me an example for PHP's CURLFile class?
问题描述
我有一个非常简单的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屋!