Files
2024-09-05 20:27:19 +08:00

89 lines
3.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/* 温馨提示:
* 在flash的参数名upload_url中可自行定义一些参数(请求方式:GET),定义后在服务器端获取即可,比如可以应用到用户验证,文件的保存名等。
* 本示例未作极致的用户体验与严谨的安全设计(如用户直接访问此页时该如何,万一客户端数据不可信时验证文件的大小、类型等),只保证正常情况下无误,请阁下注意。
*/
header('Content-Type: text/html; charset=utf-8');
$result = array();
$result['success'] = false;
$successNum = 0;
//定义一个变量用以储存当前头像的序号
$avatarNumber = 1;
$i = 0;
$msg = '';
//上传目录
$dir = "upload";
//遍历所有文件域
while (list($key, $val) = each($_FILES))
{
if ( $_FILES[$key]['error'] > 0)
{
$msg .= $_FILES[$key]['error'];
}
else
{
$fileName = date("YmdHis").'_'.floor(microtime() * 1000).'_'.createRandomCode(8);
//处理原始图片(默认的 file 域的名称是__source,可在插件配置参数中自定义。参数名:src_field_name
//如果在插件中定义可以上传原始图片的话,可在此处理,否则可以忽略。
if ($key == '__source')
{
//当前头像基于原图的初始化参数,用于修改头像时保证界面的视图跟保存头像时一致。帮助提升用户体验度。修改头像时设置默认加载的原图的url为此图片的url+该参数即可。
$initParams = $_POST["__initParams"];
$virtualPath = "$dir/php_source_$fileName.jpg";
$result['sourceUrl'] = '/' . $virtualPath.$initParams;
move_uploaded_file($_FILES[$key]["tmp_name"], $virtualPath);
/*
可在此将 $result['sourceUrl'] 储存到数据库
*/
$successNum++;
}
//处理头像图片(默认的 file 域的名称:__avatar1,2,3...,可在插件配置参数中自定义,参数名:avatar_field_names)
else if (strpos($key, '__avatar') === 0)
{
$virtualPath = "$dir/php_avatar" . $avatarNumber . "_$fileName.jpg";
$result['avatarUrls'][$i] = '/' . $virtualPath;
move_uploaded_file($_FILES[$key]["tmp_name"], $virtualPath);
/*
可在此将 $result['avatarUrls'][$i] 储存到数据库
*/
$successNum++;
$i++;
}
/*
else
{
如下代码在上传接口upload.php中定义了一个user=xxx的参数:
var swf = new fullAvatarEditor("swf", {
id: "swf",
upload_url: "Upload.php?user=xxx"
});
在此即可用$_POST["user"]获取xxx。
}
*/
}
}
$result['msg'] = $msg;
if ($successNum > 0)
{
$result['success'] = true;
}
//返回图片的保存结果(返回内容为json字符串)
print json_encode($result);
/**************************************************************
* 生成指定长度的随机码。
* @param int $length 随机码的长度。
* @access public
**************************************************************/
function createRandomCode($length)
{
$randomCode = "";
$randomChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for ($i = 0; $i < $length; $i++)
{
$randomCode .= $randomChars { mt_rand(0, 35) };
}
return $randomCode;
}
?>