PHP curl 模拟POST 上传文件(含php 5.5后CURLFile)

简介: UpLoad: UpLoad:
<?php
    /**
     * Email net.webjoy@gmail.com
     * author jackluo
     * 2014.11.21
*
*/ //* function curl_post($url, $data, $header = array()){ if(function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if(is_array($header) && !empty($header)){ $set_head = array(); foreach ($header as $k=>$v){ $set_head[] = "$k:$v"; } curl_setopt($ch, CURLOPT_HTTPHEADER, $set_head); } curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 1);// 1s to timeout. $response = curl_exec($ch); if(curl_errno($ch)){ //error return curl_error($ch); } $reslut = curl_getinfo($ch); print_r($reslut); curl_close($ch); $info = array(); if($response){ $info = json_decode($response, true); } return $info; } else { throw new Exception('Do not support CURL function.'); } } //*/ // function api_notice_increment($url, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); // $data = http_build_query($data); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //curl_file_create // $result = curl_exec($ch); $lst['rst'] = curl_exec($ch); $lst['info'] = curl_getinfo($ch); curl_close($ch); return $lst; // return $result; } /** * curl文件上传 * @var struing $r_file 上传文件的路劲和文件名 * */ /* function upload_file($url,$r_file) { $file = array("fax_file"=>'@'.$r_file,'type'=>'image/jpeg');//文件路径,前面要加@,表明是文件上传. $curl = curl_init(); curl_setopt($curl, CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$file); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); $result = curl_exec($curl); //$result 获取页面信息 curl_close($curl); echo $result ; //输出 页面结果 }*/ function upload_file($url,$filename,$path,$type){ $data = array( 'pic'=>'@'.realpath($path).";type=".$type.";filename=".$filename ); $ch = curl_init();

   //设置帐号和帐号名

 
 

   curl_setopt($ch, CURLOPT_USERPWD, 'joe:secret' );


        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true );
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // curl_getinfo($ch);
        $return_data = curl_exec($ch);
        curl_close($ch);
        echo $return_data;       
   }

  // php 5.5 以后请用以下函数

function upload_file($url,$filename,$path,$type){
  $data = array(
    'pic'=>new CURLFile(realpath($path))
  );
  $ch = curl_init();

   //也可以用以下注释掉的不用改代码,觉得新版的可以省下点代码,看个人

   //curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

   //设置帐号和帐号名

   curl_setopt($ch, CURLOPT_USERPWD, 'joe:secret' );
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true );
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  // curl_getinfo($ch);
  $return_data = curl_exec($ch);
  curl_close($ch);
  echo $return_data;
}


if ($_POST) { $url = 'http://platform.com/upload/image'; // $path = $_SERVER['DOCUMENT_ROOT']; /* print_r($_FILES); exit; */ //$filename = $path."/232.jpg"; //upload tmp $tmpname = $_FILES['fname']['name']; $tmpfile = $_FILES['fname']['tmp_name']; $tmpType = $_FILES['fname']['type']; // echo $tmpType; upload_file($url,$tmpname,$tmpfile,$tmpType); /* $data = array( 'path'=>"@$path/232.jpg", 'name'=>'h' ); */ //'pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp' //$data = array('pic'=>"@$filename", 'filename'=>'tmp'); /* $data = array( 'uid' => 10086, 'pic' => '@$tmpfile'.';type='.$tmpType ); $info = api_notice_increment($url, $data); */ //$info = curl_post($url, $data); //$info = api_notice_increment($url, $data); //upload_file($url,$tmpfile); //print_r($info); exit; /* $file = 'H:\www\test\psuCARGLSPA-pola.jpg'; //要上传的文件 $src = upload_curl_pic($file); echo $src; */ } ?> <form action="http://localhost/upload.php" enctype="multipart/form-data" method="post"> <p>UpLoad: <input type="text" name="fname" /></p> <p>UpLoad: <input type="file" name="fname" /></p> <input type="submit" value="Submit" /> </form>

 

目录
相关文章
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
438 1
|
前端开发 PHP
php学习笔记-php文件表单上传-day06
本文介绍了PHP文件上传处理流程、预定义变量`$_FILES`的使用、文件上传状态代码以及文件上传实现函数。同时,通过一个文件上传的小例子,演示了文件上传表单的创建、文件上传表单处理的PHP页面编写以及运行测试输出。
php学习笔记-php文件表单上传-day06
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
823 0
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
PHP
PHP遍历文件并同步上传到服务器
在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。
373 16
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
存储 安全 数据库连接
php.ini 文件的用途是什么?
【8月更文挑战第29天】
422 1
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
327 0
PHP——调用java文件中的方法
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
468 6
|
API PHP UED
​一个PHP文件实现联系表单自动发送邮件
使用PHP和AOKSend服务,可以创建一个联系表单,收集用户信息并自动发送邮件。HTML表单包含姓名、邮箱和消息字段。PHP文件`send_mail.php`处理表单提交,通过AOKSend的SMTP设置(如主机、端口、API密钥)使用PHPMailer发送邮件到指定地址。代码中还包括安全措施,如使用`htmlspecialchars`防止XSS攻击。这种方法增强了网站的用户沟通体验,并依赖AOKSend的稳定性和API进行高效邮件发送。