≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP通过CURL上传文件的简单示例

人气:1010 时间:2018-10-08

这篇文章主要为大家详细介绍了PHP通过CURL上传文件的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

PHP使用CURL上传文件只需发送一个POST请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以“@”开头,然后使用CURL把该变量以POST方式发送到服务器,在服务端即可以从超级全局变量$_FILES中取到相应的上传文件信息。

下面我们以一个例子来展示这个过程。

假设本地有一个文本文件log.txt,其路径为“/www/test/log.txt”,内容如下:


this is a file for test
hello PythonTab!

# End www_512pic_com

为了把这个文件上传给服务端的脚本http://www.q1010.com/upload.php,我们在本地写了一个名为curl_file.php的脚本,内容如下:


 "bar",
//要上传的本地文件地址
"upload" = > "@/www/test/log.txt"
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
 ?>

# End www_512pic_com

curl_file.php的逻辑很简单,设置POST变量$post_data,其中upload指向需要发送的文件。这里要注意,我们之前使用POST都是发送一个字符串,然后在服务器端使用file_get_contents(“php//input”)来获取该字符串,和这里的用法不一样,其实POST也可以像GET一样,发送键值对。在服务端有一个超级全局变量$_POST可以像$_GET一样,获取相应的POST数据的值。需要注意的是,上传文件的变量不是存在着$_POST中,而是在$_FILES中。

 

为了展示服务端收到上述代码的文件上传请求的逻辑,我们在upload.php中写了以下代码:




# End www_512pic_com

upload.php首先使用var_export将$_FILES变量输出到标准输出,然后使用file_get_contents读取$_FILES[‘upload’][‘tmp_name’]所指文件的内容,并输出到标准输出,然后把$_FILES[‘upload’][‘tmp_name’]所指文件自制到当前目录的log_copy.txt文件中。该脚本的标准输出如下:


array(
 'upload' =>
     array(
     'name' => 'log.txt',
     'type' => 'application/octet-stream',
     'tmp_name' => '/tmp/phpLUB59F',
     'error' => 0,
     'size' => 36,
     )
 )
 this is a file for test
 hello PythonTab!

# End www_512pic_com

可以看到$_FILES变量中有一个upload数组,对应到上传文件描述信息,其中name和type分别表示名称和类型。tmp_name比较关键,服务端在接收到上传文件之后,会把文件写在一个临时文件中,这个临时文件的名字就是tmp_name的值,这也是为什么我们读取该文件可以获取一log.txt的文件内容。一般在服务端接收到上传文件后都需要立即读取该文件或者把文件复制到别外一个文件中,因为tmp_name所指的临时文件在服务端脚本执行完毕后会被删除掉,upload.php脚本的最后一行就是把临时文件复制到我们的目标文件中。

本文来自:http://www.q1010.com/173/2552-0.html

注:关于PHP通过CURL上传文件的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:CURL,上传文件

您可能感兴趣的文章

  • PHP支持curl_init函数运行的简单示例
  • php开启curl的简单示例
  • php fckeditor上传文件,并按日期存放及重命名
  • php curl采集远程页面的简单示例
  • php.ini 上传文件配置及安全配置示例
  • 解决phpmyadmin上传文件大小限制的简单示例
  • php限制上传文件类型并保存上传文件
  • php上传文件并存储到mysql数据库的简单示例
  • php表单同时上传多个文件实现方法
  • php上传文件并显示上传进度的简单示例
上一篇:php 浅析file_get_contents、curl 的效率和稳定性
下一篇:PHP 11个提问频率最高的面试题
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。