| | |
| | | */ |
| | | package org.springblade.modules.resource.endpoint; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.JSONPObject; |
| | | import io.swagger.annotations.Api; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.SneakyThrows; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springblade.common.utils.ImageUtils; |
| | | import org.springblade.common.utils.WeiXinSecurityUtil; |
| | | import org.springblade.core.launch.constant.AppConstant; |
| | |
| | | import org.springblade.core.tool.constant.RoleConstant; |
| | | import org.springblade.core.tool.utils.FileUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.ImageUtil; |
| | | import org.springblade.modules.resource.builder.oss.OssBuilder; |
| | | import org.springblade.modules.resource.entity.Attach; |
| | | import org.springblade.modules.resource.entity.AttachData; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.BufferedReader; |
| | | import java.io.DataOutputStream; |
| | | import java.io.InputStreamReader; |
| | | import java.io.OutputStream; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 对象存储端点 |
| | |
| | | @Api(value = "对象存储端点", tags = "对象存储端点") |
| | | @RequestMapping(AppConstant.APPLICATION_RESOURCE_NAME + "/oss/endpoint") |
| | | public class OssEndpoint { |
| | | private static final Logger logger = LoggerFactory.getLogger(OssEndpoint.class); |
| | | |
| | | /** |
| | | * 对象存储构建类 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 上传文件指定后缀并保存至附件表 |
| | | * |
| | | * @param file 文件 |
| | | * @return ObjectStat |
| | | */ |
| | | @SneakyThrows |
| | | @PostMapping("/put-file-attach-suffix") |
| | | public R<BladeFile> putFileAttachSuffix(@RequestParam MultipartFile file, @RequestParam String suffix) { |
| | | String fileName = file.getOriginalFilename(); |
| | | String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1); |
| | | String[] split = suffix.split(","); |
| | | List<String> list = Arrays.asList(split); |
| | | if (list.contains(fileExtension)) { |
| | | BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream()); |
| | | Long attachId = buildAttach(fileName, file.getSize(), bladeFile); |
| | | bladeFile.setAttachId(attachId); |
| | | // 修改link |
| | | changeLink(bladeFile); |
| | | // 返回 |
| | | return R.data(bladeFile); |
| | | } else { |
| | | return R.fail("上传的附件必须是pdf,doc,docx格式!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 上传文件并保存至附件表 |
| | | * |
| | | * @param fileName 存储桶对象名称 |
| | |
| | | * @return attachId |
| | | */ |
| | | private Long buildAttachData(Long attachId, String fileName, Long fileSize, BladeFile bladeFile, MultipartFile file) { |
| | | String fileExtension = FileUtil.getFileExtension(fileName); |
| | | AttachData attach = new AttachData(); |
| | | attach.setAttachId(attachId); |
| | | attach.setName(bladeFile.getName()); |
| | | attach.setOriginalName(bladeFile.getOriginalName()); |
| | | attach.setSize(fileSize); |
| | | attach.setExtension(fileExtension); |
| | | attach.setData(ImageUtils.mulToBase64(file)); |
| | | attachDataService.save(attach); |
| | | return attach.getId(); |
| | | try { |
| | | String fileExtension = FileUtil.getFileExtension(fileName); |
| | | AttachData attach = new AttachData(); |
| | | attach.setAttachId(attachId); |
| | | attach.setName(bladeFile.getName()); |
| | | attach.setOriginalName(bladeFile.getOriginalName()); |
| | | attach.setSize(fileSize); |
| | | attach.setExtension(fileExtension); |
| | | attach.setData(ImageUtils.mulToBase64(file)); |
| | | attachDataService.save(attach); |
| | | return attach.getId(); |
| | | } catch (Exception e) { |
| | | logger.error("附件数据表保存失败", e); |
| | | } |
| | | return 0L; |
| | | } |
| | | |
| | | /** |