php curl 文件传输

因为项目需要,后台部署了好几个服务器,所以每次都会需要手动同步文件,很麻烦,所以本人想通过上传的时候自动同步来实现文件上传,废话不多说上代码

  
            $filePath = C('fileUrl').C('FILE_PATH').'你的路径'.$_FILES["file"]["name"];
            $url = C('fileUrl');
            $data=array(
                'fileName'=> new CURLFile($file['file']['tmp_name'],$_FILES["file"]['type'],C('FILE_PATH').'你的路径'.$_FILES["file"]["name"]),
                'name'=>$_FILES["file"]["name"]
            );
            $ch = curl_init();
            curl_setopt($ch,CURLOPT_URL, $url); //需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //设为 TRUE ,将在启用 CURLOPT_RETURNTRANSFER 时,返回原生的(Raw)输出。
            curl_setopt($ch,CURLOPT_POST,true); //发送 POST 请求
            curl_setopt($ch,CURLOPT_POSTFIELDS,$data); //发送的数据
            curl_setopt($ch, CURLOPT_TIMEOUT, 0); //	允许 cURL 函数执行的最长秒数。 0为无限制
             
            $result = curl_exec($ch);
            //判断返回是否异常
            if(curl_errno($ch)){
                $result = curl_error($ch);
                curl_close($ch);
                echo(json_encode(array('code' => 1, "msg"=>"同步文件失败,请稍后再试")));
                exit();

            }
            curl_close($ch);

如上图所示:

$_FILES 这个是文件上传获取到的信息,本人用的layui上传来获取的,直接

$file = $_FILES;就能获取文件信息,可以打印出来看看,具体的layui上传方法,可以查看layui文档这是地址:

https://www.layui.com/doc/modules/upload.html

先得到文件路径,这个自己配置,

 $filePath = C('fileUrl').C('FILE_PATH').'你的路径'.$_FILES["file"]["name"];这个是我的文件所在路径,

$url 接收文件发的地址方法,

$data需要传输的文件信息(CURLFile(文件临时路径,文件类型,文件存放路径)用于传输文件的方法,详细介绍自行百度),

$ch = curl_init(); 初始化对话

剩下的设置都有

上面是发送方的

下面的是接收方的

    //接收文件
       public function  getFileAction(){

        if(!$_FILES){
            echo json_encode(array('code'=>1,"msg"=>"接收失败"));
            exit();
        }

        $fileName =$_FILES['fileName']["name"] ;
        $filePath = iconv("UTF-8","GBK//IGNORE","文件路径");
        if($_FILES){
            if(!file_exists($filePath)){
                mkdir($filePath);
            }
            $dest ="文件路径". iconv("UTF-8","GBK//IGNORE",$fileName);
            $info =  copy($_FILES['fileName']['tmp_name'], $dest);
            if(!$info){
                echo json_encode(array('code'=>1,"msg"=>"接收失败"));
                exit();
            }
            echo json_encode(array('code'=>0,"msg"=>"接收成功"));
        }else{
            echo json_encode(array('code'=>1,"msg"=>"接收失败"));
        }
    }

$filePath = iconv("UTF-8","GBK//IGNORE","文件路径"); 注意这里的文件路径只是一个目录,不带文件名称

$dest ="文件路径". iconv("UTF-8","GBK//IGNORE",$fileName); 这个是存放文件的目标地址用iconv转换一下是为了用file_exists()方法,如果用转化的话会报错找不到文件

以上就是文件传输和接收的方法,如有问题欢迎留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值