|
|
本帖最后由 Simmoc 于 2020-3-17 23:28 编辑
可以尝试用 think\File 对象接收上传的文件
-
- use think\Config;
- use think\Db;
- use think\File;
- /**
- * @param File $file
- * @param string $save_path
- * @param bool|true $is_record
- * @param array $rule
- * @return array
- */
- static public function uploadFile(File $file,$save_path="",$is_record=true,$rule=[] ) {
- $return=[
- "code"=>1001,
- "data"=>"",
- "msg"=>"文件上传成功",
- ];
- $file_hash_md5 = $file->hash("md5");
- $file_hash_sha1 = $file->hash("sha1");
- //判断数据库中是否存在
- if ($is_record){
- $images_table = Config::get("upload.upload_files_table");
- $map = [
- "md5"=>$file_hash_md5,
- "sha1"=>$file_hash_sha1,
- ];
- $search_image=Db::table($images_table)->where($map)->find();
- if ($search_image){
- $return["path"] = $search_image["path"];
- $return["msg"] = "获取已存在图像成功";
- $return['data']['id'] = $search_image["id"];
- $return['data']['path'] = $search_image["path"];
- $return['data']['type'] = "files" ;
- return $return;
- }
- }
- $save_path = self::getSavePath("files");
- $validate_rule = $validate_rule = $rule ? $rule : Config::get("upload.upload_files_validate");
- $info = $file->validate($validate_rule)->move($save_path);
- if ( $info ) {
- $oinfo = $info->getInfo();
- $data['name'] = $oinfo['name'];
- $data['path'] = self::getSavePath("files",false).DS.$info->getSaveName();
- $data['path'] = str_replace('\\', '/', $data['path']);
- $data['md5'] = $file_hash_md5;
- $data['sha1'] = $file_hash_sha1;
- $data['size'] = $oinfo['size'];
- $data['type'] = 'local';
- $data['create_time'] = time();
- if($is_record){
- $images_table = Config::get("upload.upload_files_table");
- if ( $id = Db::table($images_table)->insertGetId($data) ) {
- $return['data']['id'] = $id;
- $return['data']['path'] = $data['path'];
- $return['data']['type'] = "images" ;
- } else {
- $return['code'] = 1041;
- $return['msg'] = '记录到数据库失败!';
- }
- }else{
- $return['data']['path'] = $data['path'];
- $return['data']['type'] = "files" ;
- }
- } else {
- $return['code'] = 1040;
- $return['msg'] = $file->getError();
- }
- return $return;
- }
复制代码 |
|