首页 > 编程 > PHP > 正文

可兼容php5与php7的cURL文件上传功能实例分析php技巧

2020-03-22 17:43:54
字体:
来源:转载
供稿:网友
这篇文章主要介绍了可兼容php5与php7的cURL文件上传功能,结合实例形式分析了针对php5与php7版本在使用curl进行文件上传时的相关判定与具体操作技巧,需要的朋友可以参考下

本文实例讲述了可兼容php5与php7的cURL文件上传功能。分享给大家供大家参考,具体如下:

为啥要写这个示例

最近修改一个项目,需要通过cURL上传文件。

记得之前做过类似实现的,于是翻出来之前的代码,使用的是“@”前缀方式。

但同样的方法现在不行了!后来发现,是版本兼容问题。

奔着开源分享的精神,同时避免自己遗忘,于是写了下面的示例程序。

示例程序

特别说明:

共3个文件,都放在web根目录的test目录下,同时保证该目录可写。上传的图片也会保存在该目录。

如果要将程序文件放在其他目录运行,必须更改php代码中的相关URL,否则示例可能无法运行。


 html  head  title 上传示例 /title  /head  body  p 下面上传文件到中间脚本: /p  br /  form action= upload.php method= post enctype= multipart/form-data  选择文件: input type= file name= file /  input type= submit value= 上传 /  /form  /body  /html 



 ?php * 接收通过浏览器上传的文件 * @author Straiway straiway@qq.com  * @site http://straiway.sinaapp.comif (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 ]} br / img src= {$result_array[ data ][ url ]} /  } else { exit( curl上传失败!错误信息:{$result[ info ]}  } else { exit( 发生错误,curl返回结果:{$result} } else { exit( curl请求发生错误 . var_export($error, true));}



 ?php * 接受通过curl上传的文件。 * @author Straiway straiway@qq.com  * @site http://straiway.sinaapp.comif (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));


参考资料

http://php.net/manual/en/function.curl-setopt.php

//www.jb51.net/article/139950.htm


您可能感兴趣的文章:

PHP区块查询实现方法分析php技巧

PHP折半查找算法实例分析php技巧

PHP折半(二分)查找算法实例分析php技巧


以上就是可兼容php5与php7的cURL文件上传功能实例分析php技巧的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表