IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> tp5 实现curl上传文件到另一个服务器 -> 正文阅读

[PHP知识库]tp5 实现curl上传文件到另一个服务器

1.接收前端传过来的文件接口

   public function index()
    {

        $upload_path = DS . 'uploads' . DS .'image'.DS.date('Ymd', time()).DS;
        $public_path =  'public' . $upload_path;
        $type = $_FILES['file']['type'];
        $file_name = $_FILES['file']['name'];
        $tmp_name = $_FILES['file']['tmp_name'];
        $new_file_url=ROOT_PATH.$public_path;
        $new_file = ROOT_PATH.$public_path.$file_name;
        if(!file_exists($new_file_url)){
            mkdir($new_file_url,0777,true);
        }
        /*移动到临时文件*/
        move_uploaded_file($tmp_name,$new_file);
        $data = [
            'file' => new \CURLFile(realpath($new_file)),//'@'.realpath($tmp_name)
            'fileName'=>$file_name
        ];
        $data['file']->name= iconv('utf-8', 'gbk', $data['file']->name); //处理中文名文件
        $url='http://localhost/public/index.php/index/index/addFaImg'; //要发送到的url地址
        $res = $this->post($url,$data); //post提交数据
        if($res){
            $data = json_decode($res,true);
           return json($data);
        }

    }
    function post($url , $data=array()){

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// POST数据
        curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        $output = curl_exec($ch);
        $curlErrNo = curl_errno($ch);
        $curlErr = curl_error($ch);
        curl_close($ch);
        return $output;
    }

2.另一个服务器接收curl传送的文件

   <?php


namespace app\index\controller;
use app\common\facade\Upload;
class index
{
    public function addFaImg()
    {
        // 获取curl传过来的文件
        $file = request()->file('file');
        $path='uploads/fa_image/';
        $res =Upload::upload($file,$path);
        return ['code' => 20000 , 'msg' => '上传成功','data' => $res];
    }
}

3.自己封装的上传文件的代码-------在application\common\facade里

<?php


namespace app\common\facade;


class Upload
{
    public static function upload($file, $path, $data = null)
    {
        // 获取表单上传文件 例如上传了001.jpg
        // 移动到框架应用根目录/uploads/ 目录下
        $up_dir = $path.date('Ymd', time()) . "/";  //创建目录
        if(!file_exists($up_dir)){
            mkdir($up_dir,0777,true);
        }
        $info = $file->validate(['ext'=>'webp,jpg,png,gif,jpeg,mp4,AVI,MOV'])->rule('md5')->move($up_dir);
        if($info){
            // 成功上传后 获取上传信息
            $res =  $info->getSaveName();
            // 输出 42a79759f284b767dfcb2a0197904287.jpg
            return str_replace("\\",'/',$up_dir.$res); //将反斜杆转为正斜杠 ;
        }else{
            // 上传失败获取错误信息
            $res = $file->getError();
            return $res;
        }
    }
}

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 11:47:53  更:2021-08-30 11:48:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:19:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码