当前位置:首页 > 程序心得 > 正文内容

php上传文件,通过curl上传到远程服务器 (解决php5.5 以上环境提交文件报错问题)

admin9年前 (2016-09-19)程序心得1670
 /**
     * 上传图片api
     * 
     */
    public function upload(){
        $result = array('code' => 0, 'message' => 'ok');
        ini_set('upload_max_filesize', '20M');
        ini_set('post_max_size', '20M');
        ini_set('memory_limit', '128M');
        //接收上传的远程地址
        $url = isset($_POST['url']) ? trim($_POST['url']) : '';
        if (empty($url)) {
            $result['code'] = 40001;
            $result['message'] = 'url不能为空';
            Helper_Http::writeJson(200,$result);
        }
        $file = $_FILES['file'];
        if ($file['error'] != 0) {
            $result['code'] = 40001;
            $result['message'] = '上传出错';
            Helper_Http::writeJson(200,$result);
        } else {
            $filename = $file['name'];
            $tmpfile = $file['tmp_name'];
            $filetype = $file['type'];
            $data = $this->upload_file($url, $filename, $tmpfile, $filetype);
            echo $data;
            die;
        }
    }
    
    
    /**
     * curl上传文件
     * 
     * @param unknown $url
     * @param unknown $filename
     * @param unknown $path
     * @param unknown $type
     */
    function upload_file($url,$filename,$path,$type){
        //php 5.5以上的用法
        if (class_exists('\CURLFile')) {
            $data = array('file' => new \CURLFile(realpath($path),$type,$filename));
        } else {
            $data = array(
                'file'=>'@'.realpath($path).";type=".$type.";filename=".$filename
            );
        }
        $ch = curl_init();
        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);
        $return_data = curl_exec($ch);
        curl_close($ch);
        echo $return_data;
    }
 远程代码的处理逻辑跟上传文件逻辑一样,这中间其实是有两部上传。
php上传文件,通过curl上传到远程服务器


分享到:

扫描二维码推送至手机访问。

版权声明:本文由云河空间发布,如需转载请注明出处。

本文链接:http://yuyunhe.cn/index.php/post/188.html

分享给朋友:

“php上传文件,通过curl上传到远程服务器 (解决php5.5 以上环境提交文件报错问题)” 的相关文章

SVN Skipped 'xxx' -- Node remains in conflict 错误的解决办法

svn提交发现错误#cd /home/svn/app/# svn upUpdating '.':Skipped 'xxx' -- Node remains in conflictAt revision 1054.Summary of conflicts: ...

解决在微信内分享第三方链接标题、图片、摘要、链接等问题

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> var imgUrl = docum...

Mysql 触发器使用(含navicat使用案例)

Mysql 触发器使用(含navicat使用案例)

CREATE TRIGGER updateutime2 BEFORE UPDATE on yp_cms_score for EACH ROW BEGIN  SET NEW.utime= ...

MySQL获得当前日期时间\时间戳函数

MySQL获得当前日期时间\时间戳函数 1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();+———————+| now() |+———————+| 2008-08-08 22:20:46 |+———————+除了 now()...

css做屏幕适配

CSS判断不同分辨率浏览器(显示屏幕)显示不同宽度布局CSS3技术支持IE6到IE8。将用到css3 @media样式进行判断,但IE9以下版本不支持CSS3技术,这里DIVCSS5给大家介绍通过JS实现低版本的浏览器也支持CSS3实现实用布局CSS DIV网页布局中当分辨率小于等于1024px(像...

RSA密钥的生成与配置(支付宝公私密钥可用)

RSA密钥的生成与配置(支付宝公私密钥可用)

RSA密钥的生成与配置openssl下载地址http://dldx.csdn.net/fd.php?i=20313208579480&s=ac2e809e168f7d5b8bf1515d3d6b1aa4,或者官方下载通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网中下...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。