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

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

admin9年前 (2016-09-19)程序心得1672
 /**
     * 上传图片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 以上环境提交文件报错问题)” 的相关文章

Thinkphp3.2.x 多图上传几个注意点

1、<form enctype="multipart/form-data">2、<form enctype="multipart/form-data">3、<input type="file...

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

<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= ...

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

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

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

jquery给url新增、修改、查询

(function ($) {  $.extend({   Request: function (m) {    var sValue = loca...

PHP代码优化

PHP代码效率优化发表于2013/9/24 17:50:06  490人阅读分类: Web1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。2、$row['id'] 的速度是$row[id]的7倍。3、echo 比 print 快,并...

发表评论

访客

看不清,换一张

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