返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php curl文件流
  • 779
分享到

php curl文件流

php服务器前端 2023-10-02 12:10:46 779人浏览 泡泡鱼
摘要

PHP curl文件流 应用场景: 很多时候我们接第三方接口时遇到参数需要传文件流格式的字段,不能直接传图片链接的情况。又不能直接请求第三方接口,只能采取从客户端先请求我方接口,再通过我方服务器请求第

PHP curl文件流

应用场景:

很多时候我们接第三方接口时遇到参数需要传文件流格式的字段,不能直接传图片链接的情况。又不能直接请求第三方接口,只能采取从客户端先请求我方接口,再通过我方服务器请求第三方接口的情况,需要我方把接收到的文件流原封不动上送给第三方。首先这个原封不动就很难,因为从客户端过来我们接收到的文件就已经是个文件数组了,而且后端无法获取客户端上传文件的本地路径,因为浏览器为了安全起见已经屏蔽了上送方的文件路径。
在这里插入图片描述
而且通过file方式上传的,通过post接收是接收不到的,php需要通过函数$_FILES才能接收到,下面是已经上传了两个参数,但post打印只有code参数。
在这里插入图片描述
而文件类型上传怎么能够获取到客户端完整的文件呢
在这里插入图片描述
其实这个tmp_name就是存放这个文件的临时路径,但是无法通过临时路径文件直接curl至第三方接口(其他服务器)。文件传输的思路就是客户端->我方服务器->第三方服务器;这里面有个注意的点是,不能通过临时文件直接上送至第三方服务器。
PHP上传文件类型的方法有
在文件字段的参数值前加上"@"符号,会将它识别为文件流类型,但是我并没有生效,我用的是另外一种用CURLFile类
。请求header的设置很多帖子说设置成content-type:multipart/fORM-data;但是我试了content-type:text/html;也是没问题的。如下代码:

    public function uploadPictuReaction()    {        $post = $this->req->getPost();        // header('content-type:multipart/form-data;charset=utf8');        header('content-type:text/html;charset=utf8');        $ch = curl_init();        //加@符号curl就会把它当成是文件上传处理        $data = [            'code' => 111,            'file' =>  new CURLFile('/mnt/d/www/saas_api/WEB/upload/picture/1665994115.png'),//这里是固定服务器的文件路径,可以变更成接收的文件路径            // 'file' =>  '@'.'/mnt/d/www/saas_api/web/upload/picture/1665994115.png'        ];        curl_setopt($ch, CURLOPT_URL, "Http://127.0.0.1:8086/signagreement/uploadSign");        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);        $result = curl_exec($ch);        curl_close($ch);        $this->JSONify([]);    }

以下是我的接收方法:

    public function uploadResultAction()    {        $raw = $this->req->getPost();        echo 'post2:'.json_encode($raw,JSON_UNESCAPED_UNICODE);        echo 'file2:'.json_encode($_FILES,JSON_UNESCAPED_UNICODE);   }

打印出来是这样的
在这里插入图片描述
完整示例是这样的:

    public function reGISterCompanyAction()    {        if(isset($_FILES['file']) && !$_FILES['file']['error']) { // 文件存在且不报错            $fileName = $_FILES['file']['name']; // 获取文件            $fileExtension = pathinfo($fileName); // 获取文件路径信息            $fileExtension = $fileExtension['extension']; // 获取文件后缀            $time = time(); // 根据时间戳区分            $destinationPath = $_SERVER['DOCUMENT_ROOT'].'/upload/picture/';// 目标文件夹            $newFileName = $destinationPath . $time . "." . $fileExtension; // 完整的url            if(move_uploaded_file($_FILES['file']['tmp_name'], $newFileName)) { // 移动文件到目标路径                echo("文件移动成功");            } else {                die("文件路径出错");            }        }        // header('content-type:multipart/form-data;charset=utf8');        header('content-type:text/html;charset=utf8');        $ch = curl_init();        //加@符号curl就会把它当成是文件上传处理        $data = [            'code' => 111,            'file' =>  new CURLFile($newFileName),            // 'file' =>  '@'.$newFileName        ];        curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1:8086/signagreement/uploadSign");        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);        $result = curl_exec($ch);        curl_close($ch);        return $result;    }    ```

来源地址:https://blog.csdn.net/weixin_43928139/article/details/127449117

--结束END--

本文标题: php curl文件流

本文链接: https://lsjlt.com/news/422641.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php curl文件流
    php curl文件流 应用场景: 很多时候我们接第三方接口时遇到参数需要传文件流格式的字段,不能直接传图片链接的情况。又不能直接请求第三方接口,只能采取从客户端先请求我方接口,再通过我方服务器请求第...
    99+
    2023-10-02
    php 服务器 前端
  • PHP cURL 文件上传
    本篇文章将指导如何使用 cURL 和 CURLFile 类将图像文件发送到服务器。 这个想法是将图像文件从一个页面发布到另一个页面上的另一个页面。 Index.php:首先,我们将文件 i...
    99+
    2024-02-27
  • PHP如何通过CURL上传文件
    PHP使用CURL上传文件只需发送一个POST请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以“@”开头,然后使用CURL把该变量以POST方式发送到服务器,在服务端即可以从超级全局变量$_FILES中取到相应的上传文件信息...
    99+
    2023-09-01
    php 服务器 开发语言
  • Linux curl 命令下载文件
    Linux curl 命令下载文件 0x01 curl简介 ​ 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上...
    99+
    2023-09-03
    linux 服务器 运维
  • php curl 是啥
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php curl 是啥php curl就是php中的数据传输神器。PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议...
    99+
    2020-04-13
    php curl
  • curl 怎么转php
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑curl 怎么转php?curl命令转换成php源码获取状态:curl -X GET -H "Content-Type:application/json&quo...
    99+
    2016-08-02
    curl php
  • curl如何转php
    小编给大家分享一下curl如何转php,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!curl转php的方法:1、通过“curl -X GET -H "C...
    99+
    2023-06-25
  • 什么是php curl
    这篇文章主要讲解了“什么是php curl”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是php curl”吧!php curl是php中的数据传输神器;PHP支持的由Daniel St...
    99+
    2023-06-25
  • 怎么使用curl命令下载文件
    这篇文章主要介绍“怎么使用curl命令下载文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用curl命令下载文件”文章能帮助大家解决问题。curl是一个开源的用于数据传输的命令行工具与库,它...
    99+
    2023-06-27
  • PHP安装扩展CURL
     缘由是安装某php网盘系统需要curl扩展: 通过php -v查看当前php版本: php -v 版本是是7.0.33 ,所以到官网下载https://www.php.net/distributions/php-7.0.33.tar...
    99+
    2023-09-27
    php 服务器 apache
  • php curl 设置超时
    在 PHP 中使用 cURL 函数发送请求时,我们可以通过设置超时时间来控制请求的最大时间限制,以避免长时间等待服务器响应而阻塞 PHP 脚本。 cURL 函数提供了两个选项来设置超时时间:CURLO...
    99+
    2023-09-02
    php 服务器 开发语言
  • php curl抓取不到
    如何解决php curl抓取不到数据的问题随着互联网的快速发展,爬虫技术也变得越来越成熟。在进行爬虫开发时,php curl是一种经典的爬虫工具。然而,一些开发者在使用php curl时可能会遇到抓取不到数据的情况,这时该怎么办呢?本文将介...
    99+
    2023-05-25
  • PHP 中使用流方式下载文件
    在 PHP 中,可以使用 fopen () 函数打开一个远程文件,并使用流来下载文件内容到本地文件。这样优点是不用将文件全部一次性放入内存中,可以避免内存溢出的问题。 下面是一个示例代码: $url = 'http://example.co...
    99+
    2023-08-31
    laravel php
  • php通过cURL爬取数据(4):PHP的cURL时遇到Could not resolve
    Could not resolve如何解决 在宝塔服务器中使用cURL时,如果出现 Could not resolve 的错误,通常是由于 DNS 解析失败导致的。以下是一些解决该问题的解决方案: ...
    99+
    2023-09-01
    php 服务器 开发语言
  • php curl怎么设置cookie
    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑。php curl怎么设置cookiePHP CURL中传递cookie的方法步骤curl的cookie怎么使用新手都很头疼的,curl的参数太多了,其中cookie部分...
    99+
    2021-04-11
    php curl cookie
  • php图片上传api文件流方式传递
     php和第三方接口上传图片,通过文件流实现类似前端文件上传方式 第一步把图片放到本地,注意如果是远程图片需要转成本地服务器绝对路径 第二步创建要上传文件夹 第三步请求上传图片接口 ...
    99+
    2023-09-18
    php 开发语言
  • php文件上传的流程步骤是什么
    本文将为大家详细介绍“php文件上传的流程步骤是什么”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php文件上传的流程步骤是什么”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获...
    99+
    2023-06-06
  • Linux使用curl访问网页和wget下载文件
    目录一:curl(网页访问,文件传输工具)1、安装2、常用参数3、使用示例二:wget(用于文件下载,在安装软件时会经常用到。)1、安装2、常用参数3、使用示例:三:区别1.下载文件2.下载文件并重命名3.断点续传4.限...
    99+
    2022-06-05
    Linux curl访问网页 wget下载文件
  • php如何安装配置curl
    这篇文章主要介绍了php如何安装配置curl,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先将PHP安装目录下的php_curl.dll、libeay32.dll和ssle...
    99+
    2023-06-14
  • php中curl的关闭方法
    这篇文章给大家分享的是有关php中curl的关闭方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在php中可以通过“curl_close”方法关闭一个cURL会话,其使用语法是“void curl_close ...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作