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

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

    2016-06-01 11:51:33原创370
    废话少说,直接上代码:

    <?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延迟静态绑定示例分享_PHP
    PHP编程就业班

    相关文章推荐

    • 怎么解决PHP高并发(商品秒杀)问题?两种解决方案分享• 关于memcache 今天刚开始学习遇到个有关问题 • 正则放到在线测试用具里是可以的,但是放到文件里echo数组却是不行 • 咨询学习语方向面的有关问题 • php获取现阶段url路径的函数

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网