PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
本文实例分析了PHP5.0~5.6 各版本兼容性cURL文件上传功能。分享给大家供大家参考,具体如下: 最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件。踩坑若干,够一篇文章了。 重要警告 没事不要读PHP的官方中文文档!版本跟不上坑死你! 不同版本PHP之间cURL的区别 PHP的cURL支持通过给 传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传。这与命令行直接调用cURL程序的语法是一致的: '@'.realpath('image.png'),));equals 但PHP从5.5开始引入了新的CURLFile类用来指向文件。CURLFile类也可以详细定义MIME类型、文件名等可能出现在multipart/form-data数据中的附加信息。PHP推荐使用CURLFile替代旧的 PHP 5.5另外引入了 但是坑的一点在于: 对于PHP 5.6+而言,手动设置 我的部署环境是5.4( 现在问题来了…… 环境判断:小心魔法数字! 我见过这种环境判断的代码: = 0)
我对这种代码的评价只有一个字:屎。 这个判断掉入了典型的魔法数字陷阱。版本号莫名其妙的出现在代码之中,不查半天PHP手册和更新历史,很难明白作者被卡在了哪个功能的变更上。 代码应该回归本源。我们的实际需求其实是:有CURLFile就优先采用,没有再退化到传统 建议明确指定的退化选项 从可靠的角度,推荐指定 cURL选项设置的顺序 不管是 例如 cURL有那么几个选项存在这种坑,务必小心。还好这种存在“依赖关系”的选项不多,机制也不复杂,简单处理即可。我的方法是先批量设置所有的选项,然后直到 实际上在 我的做法只是在代码表现上加个多余的保险,突出强调顺序的重要性防以后手贱。 命名空间 PHP 5.2或以下的版本没有命名空间。代码中用到了空间分隔符 要注意的反倒是有命名空间的PHP 5.3+。无论是调用CURLFile还是用 更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》 希望本文所述对大家PHP程序设计有所帮助。 (编辑:西双版纳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |