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

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

admin9年前 (2016-09-19)程序心得1660
 /**
     * 上传图片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上传到远程服务器


分享到:

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

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

本文链接:https://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获得当前日期时间\时间戳函数

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

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

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

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

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

最近在做微信支付,帮客户部署好环境后,测试微信支付,发现点击支付后老是提示:get_brand_wcpay_request:fail,于是找到代码中调用微信支付的代码段:WeixinJSBridge.invoke('getBrandWCPayRequest', { &nb...

移动wap端做社会化分享组件(支持调用原生应用)

移动wap端做社会化分享组件(支持调用原生应用)

模板使用代码:(本源码已Tp模板中使用案例)<!-- sosh分享 --> <link rel="stylesheet" href="__PUBLIC__/libs/sosh/msosh.min.css&quo...

发表评论

访客

看不清,换一张

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