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

5年以前  |  阅读数:931 次  |  编程语言:PHP 

废话少说,直接上代码:


    <?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 . '/' . 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 . '/' . $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"。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例