• 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" 。

  • 相关阅读:
    SharePoint 创建 Lookup 类型的Site Column解决跨站问题
    Thinking In Design Pattern——MVP模式演绎
    SharePoint自动化部署,利用SPSD工具包
    SharePoint自动化部署,利用PowerShell 导出/导入AD中的用户
    64位内核第十四讲,获取系统滴答数与日期时间
    内核中通过进程PID获取进程的全部路径
    内核中根据进程Pid获取卷的全目录
    内核中PID_HANDLE_OBJECT等互相转换
    获取指定句柄的类型号.
    获取句柄的类型以及对应的ID序号
  • 原文地址:https://www.cnblogs.com/52php/p/5675325.html
Copyright © 2020-2023  润新知