/* * Copyright 2019-2025 Zheng Jie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.aircraft.rest; import com.aircraft.domain.dto.LocalAttachmentMaterialDTO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import com.aircraft.annotation.Log; import com.aircraft.domain.LocalStorage; import com.aircraft.exception.BadRequestException; import com.aircraft.service.LocalStorageService; import com.aircraft.domain.dto.LocalStorageQueryCriteria; import com.aircraft.utils.FileUtil; import com.aircraft.utils.PageResult; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author Zheng Jie * @date 2019-09-05 */ @RestController @RequiredArgsConstructor @Api(tags = "工具:本地存储管理") @RequestMapping("/api/localStorage") public class LocalStorageController { private final LocalStorageService localStorageService; @GetMapping @ApiOperation("查询文件") @PreAuthorize("@el.check('storage:list')") public ResponseEntity> queryFile(LocalStorageQueryCriteria criteria){ Page page = new Page<>(criteria.getPage(), criteria.getSize()); return new ResponseEntity<>(localStorageService.queryAll(criteria,page),HttpStatus.OK); } @ApiOperation("导出数据") @GetMapping(value = "/download") @PreAuthorize("@el.check('storage:list')") public void exportFile(HttpServletResponse response, LocalStorageQueryCriteria criteria) throws IOException { localStorageService.download(localStorageService.queryAll(criteria), response); } @PostMapping @ApiOperation("上传文件") public ResponseEntity createFile(@RequestPart("file") MultipartFile file){ LocalStorage localStorage = localStorageService.create(file.getOriginalFilename(), file); LocalAttachmentMaterialDTO localAttachmentMaterialDTO = new LocalAttachmentMaterialDTO(); localAttachmentMaterialDTO.setFileType(localStorage.getSuffix()); localAttachmentMaterialDTO.setFileSize(file.getSize()); localAttachmentMaterialDTO.setNewFileName(localStorage.getRealName()); localAttachmentMaterialDTO.setSourceFileName(localStorage.getName()); localAttachmentMaterialDTO.setFileFullPath("/file/" + localStorage.getType() + "/" + localStorage.getRealName()); return new ResponseEntity<>(localAttachmentMaterialDTO, HttpStatus.OK); } @ApiOperation("上传图片") @PostMapping("/pictures") public ResponseEntity uploadPicture(@RequestPart("file") MultipartFile file){ // 判断文件是否为图片 String suffix = FileUtil.getExtensionName(file.getOriginalFilename()); if(!FileUtil.IMAGE.equals(FileUtil.getFileType(suffix))){ throw new BadRequestException("只能上传图片"); } LocalStorage localStorage = localStorageService.create(file.getOriginalFilename(), file); LocalAttachmentMaterialDTO localAttachmentMaterialDTO = new LocalAttachmentMaterialDTO(); localAttachmentMaterialDTO.setFileType(localStorage.getSuffix()); localAttachmentMaterialDTO.setFileSize(file.getSize()); localAttachmentMaterialDTO.setNewFileName(localStorage.getRealName()); localAttachmentMaterialDTO.setSourceFileName(localStorage.getName()); localAttachmentMaterialDTO.setFileFullPath("/file/" + localStorage.getType() + "/" + localStorage.getRealName()); return new ResponseEntity<>(localAttachmentMaterialDTO, HttpStatus.OK); } // @PutMapping // @Log("修改文件") // @ApiOperation("修改文件") // public ResponseEntity updateFile(@Validated @RequestBody LocalStorage resources){ // localStorageService.update(resources); // return new ResponseEntity<>(HttpStatus.NO_CONTENT); // } // // @Log("删除文件") // @DeleteMapping // @ApiOperation("多选删除") // @PreAuthorize("@el.check('storage:del')") // public ResponseEntity deleteFile(@RequestBody Long[] ids) { // localStorageService.deleteAll(ids); // return new ResponseEntity<>(HttpStatus.OK); // } }