php curl编码类型设置、文件上传与接收数据

12 篇文章 0 订阅
2 篇文章 0 订阅

1、PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
http://www.jb51.net/article/48185.htm

如果设定content-type(CURLOPT_HTTPHEADER,curl_setopt ,curl_setopt_array),按照设定;如果没有设定,curl自动添加(multipart/form-data 或 application/x-www-form-urlencoded)。

2、http-关于application/x-www-form-urlencoded等字符编码的解释说明
http://blog.csdn.net/klarclm/article/details/7711021

3、PHP 使用 curl 提交 json 格式数据
http://www.cnblogs.com/caly/archive/2013/04/11/3013980.html

4、浅谈php表单提交中enctype属性
http://blog.csdn.net/freshlover/article/details/8603648

5、PHP输入流php://input介绍
http://www.jb51.net/article/31317.htm


$data='{"content":"kg9Ho+wf8bpNTPsqRUFbGifivt81fXk2dTiVTVgotKjI2Uv1b9Vq\/HwydVQu2+LM"}';

$this->_options[CURLOPT_POSTFIELDS] = $data;

curl设置了 ‘Content-Type’ => ‘text/plain’ 头,post的数据为json串,可以用file_get_contents(‘php://input’) 获取数据 ,
$_GET、$_POST为空。file_get_contents(‘php://input’) 获取的数据:

string ‘{“content”:”kg9Ho+wf8bpNTPsqRUFbGifivt81fXk2dTiVTVgotKjI2Uv1b9Vq\/HwydVQu2+LM”}’
(length=79)

curl没有设置头,post的数据为json串,(会自动添加application/x-www-form-urlencoded),可以用file_get_contents(‘php://input’) 获取数据,$_GET为空, $_POST的内容:

array (size=1)
‘{“content”:”kg9Ho_wf8bpNTPsqRUFbGifivt81fXk2dTiVTVgotKjI2Uv1b9Vq\/HwydVQu2_LM”}’ => string ” (length=0)

file_get_contents(‘php://input’) 获取的数据:

  string '{"content":"kg9Ho+wf8bpNTPsqRUFbGifivt81fXk2dTiVTVgotKjI2Uv1b9Vq\/HwydVQu2+LM"}'  (length=79)

6、curl含有上传文件

$file = realpath(ltrim($item, '@'));
$item = new CURLFile($file);
$item->setPostFilename($filename);

$data['dataFile']=$item;//$data数组中还有其他数据

$this->_options[CURLOPT_POSTFIELDS] = $data;

curl_setopt_array($this->_curl, $this->_options);
curl_exec($this->_curl);

new CURLFile

会自动设置content-type : multipart/form-data ; boundary=————————70c909cf0943e42f。如果同时设置了content-type : multipart/form-data头,会自动添加boundary标识。

多个文件同时上传时$data格式:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要使用 PHP 接收通过 AJAX 发送的文件,并通过 cURL 转发文件内容,可以按照以下步骤进行操作: 1. 前端 AJAX 请求: ```javascript var fileInput = document.getElementById('fileInput'); var file = fileInput.files[0]; var formData = new FormData(); formData.append('file', file); var xhr = new XMLHttpRequest(); xhr.open('POST', 'upload.php', true); xhr.onload = function() { if (xhr.status === 200) { console.log('文件上传成功'); } else { console.log('文件上传失败'); } }; xhr.send(formData); ``` 在上面的示例中,我们使用 `FormData` 对象来创建一个表单数据,并将文件添加到表单中。然后,我们使用 `XMLHttpRequest` 对象发送 POST 请求到 `upload.php` 文件,将表单数据作为请求体发送。 2. 后端 PHP 文件(upload.php): ```php <?php // 获取上传的文件 $file = $_FILES['file']; // 构建 cURL 请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://目标地址'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, [ 'file' => new CURLFile($file['tmp_name'], $file['type'], $file['name']) ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 发送 cURL 请求 $response = curl_exec($ch); curl_close($ch); // 输出 cURL 响应 echo $response; ?> ``` 在上面的 PHP 文件中,我们首先通过 `$_FILES['file']` 获取上传的文件信息。然后,我们使用 cURL 构建一个 POST 请求,设置目标地址、请求体(包含上传的文件),以及其他必要的选项。最后,我们使用 `curl_exec()` 发送 cURL 请求,并使用 `echo` 输出 cURL 的响应。 确保将目标地址替换为你实际的目标地址。 这样,当前端通过 AJAX 发送文件时,PHP 将接收文件并使用 cURL 将文件内容转发到目标地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值