Appinventor源码
php源码
config.php
<?php
define('FILE_UPLOAD_TOKEN','123456');//上传文件密钥
define('FILE_UPLOAD_PATH','upload/');//上传文件目录
define('FILE_UPLOAD_MAXTIME','30');//上传文件超时时间单位秒
define('FILE_UPLOAD_TYPE','png,jpg,jpeg,mp4');//上传文件类型
upload.php
<?php
include('config.php');
isset($_POST['fileName'])?$upload_fileName = $_POST['fileName']:exit('缺少参数');
isset($_POST['fileBase64'])?$upload_fileBase64 = $_POST['fileBase64']:exit('缺少参数');
isset($_POST['fileType'])?$upload_fileType = $_POST['fileType']:exit('缺少参数');
isset($_POST['sign'])?$upload_sign = $_POST['sign']:exit('缺少参数');
isset($_POST['ts'])?$upload_ts = $_POST['ts']:exit('缺少参数');
//校验时间戳
$upload_ts-time()<3&&time()-$upload_ts<FILE_UPLOAD_MAXTIME?0:exit('请求超时');//根据实际情况调整
//校验签名
$upload_sign == md5($upload_fileName.$upload_fileBase64.$upload_fileType.FILE_UPLOAD_TOKEN.$upload_ts)?0:exit('签名校验失败');
//检查上传文件类型
$fileTypeArray = explode(',', strtolower(FILE_UPLOAD_TYPE));
in_array($upload_fileType,$fileTypeArray)?$fileType = $upload_fileType:exit('不支持的文件类型');
//储存文件
$fileID = uniqid('upload_');
file_exists(FILE_UPLOAD_PATH)?0:mkdir(FILE_UPLOAD_PATH);
$fileName = FILE_UPLOAD_PATH.$fileID.'.'.$fileType;
$myfile = fopen($fileName, "w") or die("Unable to open file!");
fwrite($myfile, base64_decode($upload_fileBase64));
fclose($myfile);
//获得文件URL
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ?"https://": "http://";
$url = $protocol . $_SERVER['HTTP_HOST'] . "/" . pathinfo($fileName)['dirname'] . "/" . pathinfo($fileName)['basename'];
//返回信息
$time_consuming = time()-$upload_ts;
echo "文件上传成功!链接:{$url} 耗时:{$time_consuming}秒";
1 条评论
虚心向您请教一下。我学习了你的代码,但是在我这里运行,会提示no input file specified。你那里知道是为什么吗?另外,你的APPINVENTOR是用的哪个版本的?我的微信是maginot666