• 技术文章 >后端开发 >php教程

    美图秀秀web开放平台--PHP流式上传和表单上传示例分享_php实例

    2016-05-17 08:41:00原创649

    废话少说,直接上代码:

    <?php
    /**
     * Note:for octet-stream upload
     * 这个是流式上传PHP文件
     * Please be amended accordingly based on the actual situation
     */
    $post_input = 'php://input';
    $save_path = dirname(__FILE__);
    $postdata = file_get_contents($post_input);
    if (isset($postdata) && strlen($postdata) > 0) {
     $filename = $save_path . '//m.sbmmt.com/m/' . uniqid() . '.jpg';
     $handle = fopen($filename, 'w+');
     fwrite($handle, $postdata);
     fclose($handle);
     if (is_file($filename)) {
      echo 'Image data save successed,file:' . $filename;
      exit ();
     } else {
      die ('Image upload error!');
     }
    } else {
     die ('Image data not detected!');
    }
    <?php
    /**
     * Note:for multipart/form-data upload
     * 这个是标准表单上传PHP文件
     * Please be amended accordingly based on the actual situation
     */
    if (!$_FILES['Filedata']) {
     die ('Image data not detected!');
    }
    if ($_FILES['Filedata']['error'] > 0) {
     switch ($_FILES ['Filedata'] ['error']) {
      case 1 :
       $error_log = 'The file is bigger than this PHP installation allows';
       break;
      case 2 :
       $error_log = 'The file is bigger than this form allows';
       break;
      case 3 :
       $error_log = 'Only part of the file was uploaded';
       break;
      case 4 :
       $error_log = 'No file was uploaded';
       break;
      default :
       break;
     }
     die ('upload error:' . $error_log);
    } else {
     $img_data = $_FILES['Filedata']['tmp_name'];
     $size = getimagesize($img_data);
     $file_type = $size['mime'];
     if (!in_array($file_type, array('image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/gif'))) {
      $error_log = 'only allow jpg,png,gif';
      die ('upload error:' . $error_log);
     }
     switch ($file_type) {
      case 'image/jpg' :
      case 'image/jpeg' :
      case 'image/pjpeg' :
       $extension = 'jpg';
       break;
      case 'image/png' :
       $extension = 'png';
       break;
      case 'image/gif' :
       $extension = 'gif';
       break;
     }
    }
    
    if (!is_file($img_data)) {
     die ('Image upload error!');
    }
    
    // 图片保存路径,默认保存在该代码所在目录(可根据实际需求修改保存路径)
    $save_path = dirname(__FILE__);
    $uinqid = uniqid();
    $filename = $save_path . '//m.sbmmt.com/m/' . $uinqid . '.' . $extension;
    $result = move_uploaded_file($img_data, $filename);
    if (!$result || !is_file($filename)) {
     die ('Image upload error!');
    }
    echo 'Image data save successed,file:' . $filename;
    exit ();

    备注:美图秀秀提供两个上传接口供测试
    一个是octet-stream方式上传,地址为:http://imgkaka.meitu.com/xiuxiu_web_pic_save.php
    另一个是multipart/form-data方式上传,地址为:http://web.upload.meitu.com/image_upload.php
    表单名称为"upload_file"。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:流式上传 表单上传
    上一篇:PHP网页游戏学习之Xnova(ogame)源码解读(十)_php实例 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 手写PHP API框架(二)之Composer的安装使用• 设计API接口时,要注意这些地方!• 聊聊PHP escapeshellarg函数使用的中文问题• PHP原生类的总结分享• PHP8.3要有新函数了!(json_validate函数说明)
    1/1

    PHP中文网