博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 利用CURL(HTTP)实现服务器上传文件至另一服务器
阅读量:7111 次
发布时间:2019-06-28

本文共 2480 字,大约阅读时间需要 8 分钟。

  // 上传端   
/**     * 向目标地址推送xls文件     * @Date 2019/4/29     */    public function putXls()    {        // 目标接口        $url = "http://xxx";        // 初始化 cURL 会话, 如果提供url,CURLOPT_URL 选项将会被设置成这个值        $ch = curl_init($url);        // 获取CURLFile实例        $xlsCurlFile = $this->makeCurlFile(base_path()."/public/tby.xls");        $data = array('xls' => $xlsCurlFile);        // TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。        curl_setopt($ch, CURLOPT_POST, 1);        // 从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。 设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);        // 执行给定的 cURL 会话        // 成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 设置了 CURLOPT_RETURNTRANSFER 选项,函数执行成功时会返回执行的结果,失败时返回 FALSE 。        $result = curl_exec($ch);        if (curl_errno($ch)) {
// 返回错误代码或在没有错误发生时返回 0 (零)。 // 返回错误信息,或者如果没有任何错误发生就返回 '' (空字符串)。 $result = curl_error($ch); } // 关闭 cURL 会话 curl_close($ch); } /** * 根据文件路径获取一个CURLFile类实例 * @param string $file 文件路径 * @return CURLFile * @Author zishuang.lin * @Date 2019/4/29 */ private function makeCurlFile(string $file) { /** * .xls mime为 application/vnd.ms-excel * .xlsx mime为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet * 可参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types * * 注意:也可以使用 finfo类动态获取,但需要装fileinfo扩展 * demo: $result = new finfo(); if (is_resource($result) === true) { return $result->file($filename, FILEINFO_MIME_TYPE); } return false; */ $mime = "application/vnd.ms-excel"; $info = pathinfo($file); $name = $info['basename']; $output = new CURLFile($file, $mime, $name); return $output; }
// 接收端
public function getFile() {
// 保存的文件夹,需要注意所在用户组是否有写入权限 $uploads_dir = base_path()."/public/test"; $xlsFiles = $_FILES["xls"] ?? null; if($xlsFiles){
if ($xlsFiles["error"] == UPLOAD_ERR_OK) {
$tmp_name = $xlsFiles["tmp_name"]; $name = $xlsFiles["name"]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); } // todo success }else{
// todo fail } }
 

 

注意:需要打开php curl扩展

参考:

转载于:https://www.cnblogs.com/lzs-888/p/10790637.html

你可能感兴趣的文章
FineBI学习系列之FineBI的ETL处理(图文详解)
查看>>
Java 8 新特性
查看>>
Windows启动配置数据(BCD)存储文件包含一些无效信息
查看>>
slim请求参数获取
查看>>
MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
查看>>
hadoop2.4.1伪分布式环境搭建
查看>>
Java基础-字符串(String)常用方法
查看>>
CSS------当内容超出div宽度后自动换行和限制文字不超出div宽度和高度
查看>>
要恢复页面吗?Chrome未正确关闭
查看>>
iOS 性能优化总结
查看>>
hbs模板(zmaze ui用的)
查看>>
使用ASP.NET SignalR实现一个简单的聊天室
查看>>
8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂——分而治之思想...
查看>>
Spring3.1 对Bean Validation规范的新支持(方法级别验证)
查看>>
fiddler script建议教程
查看>>
cocos 水果机,老Tiger虎机流水灯,博彩大转盘效果
查看>>
tmux不自动加载配置文件.tmux.conf
查看>>
C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)【转】
查看>>
[Database] Redis 随笔
查看>>
3 ansible-playbook 条件语句-外部变量使用
查看>>