| | |
| | | import com.aliyun.oss.model.PolicyConditions; |
| | | import com.aliyun.oss.model.PutObjectResult; |
| | | import com.jilongda.common.basic.ApiResult; |
| | | import com.jilongda.common.component.AliOss; |
| | | import com.jilongda.common.utils.WebUtils; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | @Slf4j |
| | | @Api(tags = "Ali-OSS文件上传接口") |
| | | @RestController |
| | | @RequestMapping("/ali-obs/") |
| | | @CrossOrigin("*") |
| | | @RequestMapping("/ali-oss/") |
| | | public class AliOssManageFileUploadController { |
| | | |
| | | @Value("${file.cdn:https://nncdn.pharmacylinked.com}") |
| | | private String FILE_CDN; |
| | | |
| | | @ApiOperation(value = "服务端上传", notes = "服务端上传") |
| | | @PostMapping(value = "upload") |
| | |
| | | InputStream inputStream = file.getInputStream(); |
| | | String filename = System.currentTimeMillis() + file.getOriginalFilename(); |
| | | // Endpoint以杭州为例,其它Region请按实际情况填写。 |
| | | final String endpoint = AliOss.endpoint; |
| | | final String endpoint = AliOssMange.endpoint; |
| | | // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 |
| | | final String accessKeyId = AliOss.accessKeyId; |
| | | final String accessKeySecret = AliOss.accessKeySecret; |
| | | final String bucketName = AliOss.bucketName; |
| | | final String accessKeyId = AliOssMange.accessKeyId; |
| | | final String accessKeySecret = AliOssMange.accessKeySecret; |
| | | final String bucketName = AliOssMange.bucketName; |
| | | // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 |
| | | String objectName = AliOss.dir + filename; |
| | | String objectName = AliOssMange.dir + filename; |
| | | log.info(objectName); |
| | | // 创建OSSClient实例。 |
| | | OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); |
| | |
| | | @ApiOperation(value = "服务端签名后直传", notes = "服务端签名后直传") |
| | | @PostMapping("signature") |
| | | public ApiResult<Map<String, String>> signature() { |
| | | OSS builder = new OSSClientBuilder().build(AliOss.endpoint, AliOss.accessKeyId, AliOss.accessKeySecret); |
| | | OSS builder = new OSSClientBuilder().build(AliOssMange.endpoint, AliOssMange.accessKeyId, AliOssMange.accessKeySecret); |
| | | long expireTime = 30; |
| | | long expireEndTime = System.currentTimeMillis() + expireTime * 1000; |
| | | Date expiration = new Date(expireEndTime); |
| | | PolicyConditions policyConds = new PolicyConditions(); |
| | | policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000); |
| | | policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, AliOss.dir); |
| | | policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, AliOssMange.dir); |
| | | String postPolicy = builder.generatePostPolicy(expiration, policyConds); |
| | | byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8); |
| | | String encodedPolicy = BinaryUtil.toBase64String(binaryData); |
| | | String postSignature = builder.calculatePostSignature(postPolicy); |
| | | Map<String, String> respMap = new LinkedHashMap<>(6); |
| | | respMap.put("accessid", AliOss.accessKeyId); |
| | | respMap.put("accessid", AliOssMange.accessKeyId); |
| | | respMap.put("policy", encodedPolicy); |
| | | respMap.put("signature", postSignature); |
| | | // 示例为dir |
| | | respMap.put("dir", AliOss.dir); |
| | | respMap.put("dir", AliOssMange.dir); |
| | | // 前端为key |
| | | // respMap.put("key", AliOss.dir); |
| | | respMap.put("host", AliOss.host); |
| | | // respMap.put("cdn", AliOss.cdn); |
| | | // respMap.put("key", AliOssMange.dir); |
| | | respMap.put("host", AliOssMange.host); |
| | | // respMap.put("cdn", AliOssMange.cdn); |
| | | respMap.put("expire", String.valueOf(expireEndTime / 1000)); |
| | | // // 回调 |
| | | // if (StringUtils.hasLength(AliOss.callbackUrl)) { |
| | | // if (StringUtils.hasLength(AliOssMange.callbackUrl)) { |
| | | // JSONObject jasonCallback = new JSONObject(); |
| | | // jasonCallback.put("callbackUrl", AliOss.callbackUrl); |
| | | // jasonCallback.put("callbackUrl", AliOssMange.callbackUrl); |
| | | // String callbackBody = "{\"filename\":${object},\"size\":${size},\"mimeType\":${mimeType}}"; |
| | | // jasonCallback.put("callbackBody", callbackBody); |
| | | // jasonCallback.put("callbackBodyType", "application/json"); |
| | |
| | | // respMap.put("callback", base64CallbackBody); |
| | | // } |
| | | |
| | | HttpServletResponse response = WebUtils.response(); |
| | | assert response != null; |
| | | response.setHeader("Access-Control-Allow-Origin", "*"); |
| | | response.setHeader("Access-Control-Allow-Methods", "GET, POST"); |
| | | // HttpServletResponse response = WebUtils.response(); |
| | | // assert response != null; |
| | | // response.setHeader("Access-Control-Allow-Origin", "*"); |
| | | // response.setHeader("Access-Control-Allow-Methods", "GET, POST"); |
| | | |
| | | // 关闭OSSClient。 |
| | | builder.shutdown(); |
| | |
| | | public String strUpload(InputStream inputStream, String filename) throws IOException { |
| | | //String filename = System.currentTimeMillis() + CodeGenerateUtils.generateVolumeSn()+".jpg"; |
| | | // Endpoint以杭州为例,其它Region请按实际情况填写。 |
| | | final String endpoint = AliOss.endpoint; |
| | | final String endpoint = AliOssMange.endpoint; |
| | | // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 |
| | | final String accessKeyId = AliOss.accessKeyId; |
| | | final String accessKeySecret = AliOss.accessKeySecret; |
| | | final String bucketName = AliOss.bucketName; |
| | | final String accessKeyId = AliOssMange.accessKeyId; |
| | | final String accessKeySecret = AliOssMange.accessKeySecret; |
| | | final String bucketName = AliOssMange.bucketName; |
| | | // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 |
| | | String objectName = AliOss.dir + filename; |
| | | String objectName = AliOssMange.dir + filename; |
| | | log.info(objectName); |
| | | // 创建OSSClient实例。 |
| | | OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); |
| | |
| | | @PostMapping(value = "/callback") |
| | | public ApiResult callback(@RequestBody Map<String, Object> callback) { |
| | | log.info("oss回调{}", callback); |
| | | String filename = "http://".concat(AliOss.bucketName).concat(".").concat(AliOss.endpoint).concat("/").concat(callback.get("filename").toString()); |
| | | String filename = "http://".concat(AliOssMange.bucketName).concat(".").concat(AliOssMange.endpoint).concat("/").concat(callback.get("filename").toString()); |
| | | return ApiResult.okmsg(filename); |
| | | } |
| | | |