博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】兼容php5,php7的cURL文件上传示例
阅读量:6824 次
发布时间:2019-06-26

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

转载来自:

 

index.html

    上传示例    
下面上传文件到中间脚本:
选择文件:

 

upload.php

* @site http://straiway.sinaapp.com */if (empty($_FILES['file'])) { exit('没有上传指定名称的文件');} // 先保存到本地,再上传$file = $_FILES['file'];$file_name = __DIR__ . "/{
$file['name']}";move_uploaded_file($_FILES['file']['tmp_name'], $file_name); // 本地测试时,可能需要更改下面的URL$ch = curl_init('http://localhost/test/upload_via_curl.php'); // 从php5.5开始,反对使用"@"前缀方式上传,可以使用CURLFile替代;// 据说php5.6开始移除了"@"前缀上传的方式if (class_exists('CURLFile')) { $file = new CURLFile($file_name); // 禁用"@"上传方法,这样就可以安全的传输"@"开头的参数值 curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);} else { $file = "@{
$file_name}";} // 从php5.2开始,要上传文件,必须给CURLOPT_POSTFIELDS传递数组,而不是字符串。// 也只有传递数组,http头部的"Content-Type"才会设置成"multipart/form-data"curl_setopt($ch, CURLOPT_POSTFIELDS, array('file_via_curl' => $file)); // 将传输结果作为curl_exec的返回值,而不是直接输出curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch);$error = curl_error($ch); if ($result) { $result_array = json_decode($result, true); if ($result_array) { if ($result_array['status']) { exit("上传成功!curl返回图片地址:{
$result_array['data']['url']}
"); } else { exit("curl上传失败!错误信息:{
$result['info']}"); } } else { exit("发生错误,curl返回结果:{
$result}"); }} else { exit('curl请求发生错误' . var_export($error, true));}

 

 

upload_curl.php

* @site http://straiway.sinaapp.com */ if (empty($_FILES['file_via_curl'])) { $return = array('status' => 0, 'info' => '没有上传指定名称的文件');} else { // 保存文件 $file = $_FILES['file_via_curl']; // 重命名文件,便于识别 $base_name = explode('.', $file['name']); $base_name[0] .= '_upload_var_curl'; $base_name = implode('.', $base_name); $file_name = __DIR__ . "/{
$base_name}"; if (move_uploaded_file($file['tmp_name'], $file_name)) { // 本地测试时,可能需要更改下面的URL $url = "http://localhost/test/{
$base_name}"; $return = array('status' => 1, 'info' => '上传成功', 'data' => array('url' => $url)); } else { $return = array('status' => 0, 'info' => '上传失败'); }} exit(json_encode($return));

 

你可能感兴趣的文章
实用网址集合
查看>>
【转】移动web资源整理
查看>>
【Linux】CentOS7下安装JDK详细过程
查看>>
(转)Hibernate 的应用(Hibernate 的结构)?
查看>>
Ubuntu terminator 多窗口终端的快捷键
查看>>
Add Binary leetcode
查看>>
关于pycharm中缩进、粘贴复制等文本编辑功能部分失效的解决办法
查看>>
[20190524]浅谈模糊查询.txt
查看>>
Swift 构造与析构
查看>>
Java基础学习总结--Java对象的序列化和反序列化
查看>>
关于application/x-www-form-urlencoded等字符编码的解释说明
查看>>
svn项目冲突时显示无法加载项目的解决方法
查看>>
node论坛练手
查看>>
[Python3网络爬虫开发实战] 1.7.3-Appium的安装
查看>>
magento 购物车 首页 显示
查看>>
mapper.xml
查看>>
模拟EventCenter,flash自带的事件机制的一个解耦框架,callback回调方式用于模块之间的通信...
查看>>
zookeeper选主算法二
查看>>
JS 中的require 和 import 区别整理
查看>>
stream& datagram socket
查看>>