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]; }
结果:
** 借鉴以为网友的