PHP访问REST API上传文件的解决方案
最近写的一个小功能需要通过rest方式上传文件,因此就在网上找了一些解决方案。接下来说明以下我采用的解决方案:
我是利用curl来实现的,其中CURLOPT_POST的值为TRUE代表的是请求类型为POST请求,CURLOPT_POSTFIELDS定义要传递的值,下面是我的curl类:
<?php
class Curl{
protected $uri = '';
protected $hr = null; public function __construct($uri)
{
$this->uri = $uri; $this->hr = curl_init(); curl_setopt($this->hr, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->hr, CURLOPT_URL, $this->uri);
} public function post($data = array(),$param = array()) {
if(empty($data))
{
return FALSE;
} $opts = array(
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data
); if(!empty($param))
{
curl_setopt($this->hr,CURLOPT_HTTPHEADER,array("params:".http_build_query($param)));
} curl_setopt_array($this->hr, $opts);
$content = curl_exec($this->hr);
$status = curl_getinfo($this->hr, CURLINFO_HTTP_CODE);
$content_type = curl_getinfo($this->hr, CURLINFO_CONTENT_TYPE); echo $content;
}
}
?>
ps:这里我主要说的是上传文件,因此curl类中我也只定义了post方法。
接下来是我调用curl的post类上传图片的上传页面:
<?php
require_once 'curl.php'; if(isset($_FILES['file']) && !empty($_FILES['file']))
{
$file = $_FILES['file']; $newFile = './'.$file['name']; //复制文件到上传目录
move_uploaded_file($file['tmp_name'], $newFile); $curl = new Curl('http://xxxx/testCurl/post.php'); $data = array(
'pic'=>"@D:/www/testCurl/".$file['name'],
'id'=>"1"
); $curl->post($data);
}else{
?>
<html>
<head></head>
<body>
<form method='post' enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
</body>
</html>
<?php
}
?>
ps:定义传递数据时,加@符号表示是上传文件,@后的文件路径需要是绝对路径。
在rest端只需要使用$_FILES就可以接收到上传的文件了,处理方式与普通上传的处理方式相同。
PHP访问REST API上传文件的解决方案的更多相关文章
- php 下 html5 XHR2 + FormData + File API 上传文件
FormData的作用: FormData对象可以帮助我们自动的打包表单数据,通过XMLHttpRequest的send()方法来提交表单.当然FormData也可以动态的append数据.FormD ...
- 演示如何通过 web api 上传文件MVC40
演示如何通过 web api 上传文件WebApiWebFormHost/UploadFileController.cs /* * 通过 web api 上传文件 */ using System; u ...
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...
- 使用GitHub API上传文件及GitHub做图床
本文介绍GitHub API基础及上传文件到仓库API,并应用API将GitHub作为图床 GitHub API官方页面 GitHub API版本 当前版本为v3,官方推荐在请求头中显示添加版本标识. ...
- 使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_130 之前一篇文章是通过普通js+tornado来上传七牛云:使用Tornado配合七牛云存储api来异步切分上传文件,本次使用v ...
- C# Web Api 上传文件
一. 使用默认方法上传文件: 1.Action: /// <summary> /// 上传文件 使用上传后的默认文件名称 /// 默认名称是BodyPart_XXXXXX,BodyPart ...
- 1.5 WEB API 上传文件
1.前提,设置跨域 2.在控制器头添加允许跨域 /// <summary> /// 文件管理口控制器 /// </summary> [EnableCors("*&qu ...
- HttpClient 测试web API上传文件实例
1.使用HttpClient 测试上传文件并且设置header信息: using Lemon.Common; using Newtonsoft.Json; using System; using Sy ...
- 前端AngularJS后端ASP.NET Web API上传文件
本篇体验使用AngularJS向后端ASP.NET API控制器上传文件. 首先服务端: public class FilesController : ApiController { //usi ...
随机推荐
- Oracle函数大全之转换函数
chartorowid(c1) [功能]转换varchar2类型为rowid值 [参数]c1,字符串,长度为18的字符串,字符串必须符合rowid格式 [返回]返回rowid值 [示例] SELECT ...
- 告别node-forever,拥抱PM2
告别node-forever,拥抱PM2 返回原文英文原文:Goodbye node-forever,hello PM2 devo.ps团队对JavaScript的迷恋已经不是什么秘密了;node.j ...
- Greenplum——升级的分布式PostgresSQL
Greenplum数据库基于PostgreSQL开源技术.本质上讲,它是多个PostgreSQL实例一起充当一个数据库管理系统.Greenplum以PostgreSQL 8.2.15为基础构建,在SQ ...
- YanYan Self Introduction
My Website: http://finehappy.com/
- HDU 5763 Another Meaning
HDU 5763 Another Meaning 题意:一个字串有可能在模式串出现多次,问有多少种可能出现的情况.关键是有重合的字串是不能同时计入的. 思路:先用kmp求出所有字串的位置.然后,dp. ...
- shell学习记录003-cat命令
cat 命令一般用于文件的查看 cat -s file #可以去除文件中多余的上下空行 cat -T file #Python编程中会用到的制表符会在该命令中体现出来 cat -n file ...
- C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作
C# Timer用法及实例详解 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法1.定义在System.Windows.Forms里 C# Timer使用的方法2.定 ...
- iOS只执行一次的方法
IOS开发(64)之GCD任务最多只执行一次 1 前言 使用 dispatch_once 函数 在 APP 的生命周期内来保证你想确保每段代码只执行一次,即使它在代码的不同地方多次调用(比如单例的初始 ...
- "QQ尾巴病毒"核心技术的实现原理分析
声明:本文旨在探讨技术,请读者不要使用文章中的方法进行任何破坏. 2003这一年里,QQ尾巴病毒可以算是风光了一阵子.它利用IE的邮件头漏洞在QQ上疯狂传播.中毒者在给别人发信息时,病毒会自动在信息文 ...
- POJ 1753 Flip Game 状态压缩,暴力 难度:1
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4863 Accepted: 1983 Descript ...