不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2014-06-21 22:28  分类: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" 。