• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现通过CURL上传文件功能示例

    本文实例讲述了PHP实现通过CURL上传文件功能。分享给大家供大家参考,具体如下:

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

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

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

    this is a file for test
    hello PythonTab!
    
    

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

    ?php
    $url = "http://yourwebname.com/upload.php";
    $post_data = array(
    "foo" => "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;
    ?>
    
    

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

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

    ?php
    echo var_export($_FILES,true);
    echo file_get_contents($_FILES['upload']['tmp_name']);
    copy($_FILES['upload']['tmp_name'], "./log_copy.txt");
    ?>
    
    

    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!

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

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP运算与运算符用法总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
    • Thinkphp整合阿里云OSS图片上传实例代码
    • ThinkPHP 3使用OSS的方法
    • thinkPHP简单导入和使用阿里云OSSsdk的方法
    • php版阿里云OSS图片上传类详解
    • php下通过curl抓取yahoo boss 搜索结果的实现代码
    • php使用curl模拟浏览器表单上传文件或者图片的方法
    • php中上传文件的的解决方案
    • PHP上传文件及图片到七牛的方法
    • PHP+Ajax实现上传文件进度条动态显示进度功能
    • php实现表单提交上传文件功能
    • 详解PHP使用OSS上传文件
    上一篇:php实现微信支付之现金红包
    下一篇:ThinkPHP5框架缓存查询操作分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP实现通过CURL上传文件功能示例 PHP,实现,通过,CURL,上传,