public function upload()
{
$data = file_get_contents("php://input");
//获取文件后缀
$fileType = '';
$this->getFileType($data, $fileType);
if ($fileType == 'unknown'){
exit('文件类型识别失败');
}
//拼接文件后缀:生成唯一文件名
$uniqueName = uniqid('app_', true) . $fileType;
$saveDb = $this->uploadBinaryFile($data, $uniqueName);
var_dump('$params');
var_dump($saveDb);
// # 上传文件 【后续我是上传阿里,上传到哪自便】
// $instance = ALi::setConf($params['type']);
// $instance->getBuilder();
// $result = $instance->uploadOss($fileName, $filePath);
//
// if (isset($result['info']['http_code']) && $result['info']['http_code'] == 200) {
// return success(Status::SUCCESS, '操作成功', [
// "link" => $result['info']['url']
// ]);
// } else {
// return error(Status::ERROR, '传输异常 请重试!', null);
// }
}
public function uploadBinaryFile($data, $uniqueName)
{
$relativePath = BASE_PATH . '/runtime/master/exp/';
$savePath = $relativePath . $uniqueName; //存放到数据表的路径
$saveDb = $relativePath . $uniqueName; //存放到数据表的路径
if (!is_dir($relativePath)) { //文件夹不存在,则创建;并给最大权限 777
mkdir($relativePath,0777,true);
chmod($relativePath,0777);
}
file_put_contents($savePath, $data); //保存文件
return $saveDb;
}
function getFileType($file, &$fileType)
{
/* 参考:PHP通过二进制流判断文件类型 https://blog.csdn.net/xwlljn/article/details/85134958 */
// 文件头标识 (2 bytes)
$bin = substr($file,0, 2);
$strInfo = unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);
/* 参考:利用文件头判断文件类型 https://blog.csdn.net/weixin_34267123/article/details/85506211 */
// 文件头对应的文件后缀关联数组
$fileToSuffix = [
255216 => '.jpg',
7173 => '.gif',
6677 => '.bmp',
13780 => '.png',
208207 => '.xls', //注意:doc 文件会识别成 208207
8075 => '.zip', //注意:xlsx文件会识别成 8075
239187 => '.js',
6787 => '.swf',
7067 => '.txt',
7368 => '.mp3',
4838 => '.wma',
7784 => '.mid',
8297 => '.rar',
6063 => '.xml',
];
$fileType = empty($fileToSuffix[$typeCode]) ? 'unknown' : $fileToSuffix[$typeCode];
}
结果:

** 借鉴以为网友的