documento oficial nube Ali ha estado haciendo muy detallado, dirección indicada más abajo, se recomienda encarecidamente un vistazo a la documentación oficial
https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.788.32037815QD8fgC
paso 1
En primer lugar, el relleno en su respectiva información de configuración del archivo de configuración application.yml (la información de configuración se puede ver en la consola aliyun web oficial)
Introducido en el respectivo archivo dependiente pom
<dependency> <groupId> com.aliyun.oss </ groupId> <artifactId> aliyun-sdk-oss </ artifactId> <versión> 3.8.0 </ versión> </ dependency>
paso 2
herramientas de creación, la información de configuración (este paso puede ser omitido, directamente en la capa de servicio en) application.yml documentos a través de las herramientas, la información de configuración se define como una variable estática, que puede ser directamente a través del "nombre de la clase." La manera de conseguir
. 1 del paquete com.atzjhydx.oss.utils; 2 . 3 Importar la org.springframework.beans.factory.InitializingBean; . 4 Importación org.springframework.beans.factory.annotation.Value; . 5 Importación org.springframework.stereotype.Component; . 6 . 7 @ Componente 8 // papel InitializingBean es llevar a cabo operaciones a medida después de la inicialización de frijol. . 9 pública de clase ConstantPropertiesUtils los implementos de la InitializingBean { 10 11. @Valor ( "Aliyun.aFile.accessKeyId $ {}" ) 12 es privada Cadena accessKeyId; 13 es 14 @Valor ( "$ {} Aliyun.aFile.accessKeySecret" ) 15 privada Cadena accessKeySecret; 16 17 @Valor ( "$ {} Aliyun.aFile.endpoint" ) 18 privada punto final de cuerda; 19 20 @Valor ( "$ {} Aliyun.aFile.bucketName" ) 21 privada Cadena bucketName; 22 23 pública estática Cadena END_POINT; 24 pública estática Cadena BUCKET_NAME; 25 pública estática Cadena ACCESS_KEY_ID; 26 pública estática Cadena ACCESS_KEY_SECRET; 27 28 @ Override 29 pública vacío afterPropertiesSet () lanza la excepción { 30 END_POINT = punto final; 31 BUCKET_NAME = bucketName; 32 ACCESS_KEY_ID = accessKeyId; 33 ACCESS_KEY_SECRET = accessKeySecret; 34 } 35 }
paso 3
capa de servicio en el logro de la función de carga específica
1 paquete com.atzjhydx.oss.service.impl; 2 3 importación com.aliyun.oss.HttpMethod; 4 importación com.aliyun.oss.OSS; 5 importación com.aliyun.oss.OSSClientBuilder; 6 importación com.aliyun.oss.model.GeneratePresignedUrlRequest; 7 importación com.atzjhydx.oss.service.OssService; 8 importación com.atzjhydx.oss.utils.ConstantPropertiesUtils; 9 importación org.joda.time.DateTime; 10 importación org.springframework.stereotype.Service; 11 importación org.springframework.web.multipart.MultipartFile; 12 es 13 es Importar un java.io.InputStream; 14 Importar la java.net.URL; 15 Importación java.util.Date; 16 Importación java.util.UUID; . 17 18 es @Service 19. Pública clase OssServiceImpl la implementos OssService { 20 es @ Override 21 es público Cadena uploadFileAvatar (un archivo MultipartFile) { 22 es 23 es // adquirido perfil de configuración de conexión (a través de herramientas personalizadas adquirida) 24 cadena de punto final = ConstantPropertiesUtils.END_POINT; 25 String = accessKeyIdConstantPropertiesUtils.ACCESS_KEY_ID; 26 es de cadena accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET; 27 Cadena bucketName = ConstantPropertiesUtils.BUCKET_NAME; 28 29 el OSS ossClient = nulo ; 30 31 es el try { 32 // Crear instancia oss 33 es ossClient = nuevo nuevo . OSSClientBuilder () Build (Punto de llegada, accessKeyId , accessKeySecret); 34 es 35 // Obtener flujo de entrada de carga de archivos 36 InputStream flujoEntrada = file.getInputStream (); 37 [ 38 es //Adquiriendo el nombre de archivo (usando los problemas de cobertura evitar UUID de archivo existentes) 39 Cadena OriginalFileName = file.getOriginalFilename (); 40 Cadena uuid = UUID.randomUUID toString () () el replaceAll ( "-", "". ); 41 es Cadena nomArchivo UUID OriginalFileName + = ; 42 es // el archivo clasificadas por fecha (herramientas fecha usando joda-tiempo, se puede utilizar Java herramientas propias) 43 es rutaDatos String = nuevo nuevo el DateTime () toString ( "AAAA / la MM. / dd " ); 44 es // fecha del archivo que constituye el nombre de archivo y la ruta de la carpeta de mezcla 45 filename = rutaDatos +" / "+ nombre de fichero; 46 es 47 // llama al método para cargar oss 48 @Bucket primera nombre de parámetro 49 // segundo parámetro sube una ruta de acceso y nombre del archivo oss A / B / C / 123.jpg 50 // tercer parámetro flujo de entrada de carga de archivos 51 es ossClient.putObject (bucketName, nombre de archivo, flujoEntrada); 52 es 53 es // URL devuelto conjunto período de 10 años 54 es una fecha de vencimiento = nuevo nuevo una fecha ( nuevo nuevo una fecha () la getTime () + 10 * 365 * 24 * 60 * 60 * 1000. ); 55 REQ GeneratePresignedUrlRequest = nuevo nuevo GeneratePresignedUrlRequest (bucketName, nombre de archivo, HttpMethod.GET); 56 es req.setExpiration (vencimiento); 57 es 58 // eco URL 59 URL url = ossClient.generatePresignedUrl (req); 60 de retorno url.toString (); 61 62 } catch (Exception e) { 63 e.printStackTrace (); 64 de retorno nulo ; 65 } finalmente { 66 si (ossClient =! Nula ) { 67 ossClient.shutdown (); 68 } 69 } 70 } 71 }
capa del controlador, de vuelta la información url para la primera página
1 paquete com.atzjhydx.oss.controller; 2 3 importación com.atzjhydx.commonutils.R; 4 importación com.atzjhydx.oss.service.OssService; 5 importación org.springframework.beans.factory.annotation.Autowired; 6 importación org.springframework.web.bind.annotation.CrossOrigin; 7 importación org.springframework.web.bind.annotation.PostMapping; 8 importación org.springframework.web.bind.annotation.RequestMapping; 9 importación org.springframework.web.bind.annotation.RestController; 10 importaciónorg.springframework.web.multipart.MultipartFile; . 11 12 es @RestController 13 se @RequestMapping ( "/ eduoss / fileoss" ) 14 @CrossOrigin 15 pública clase OssController { 16 17. @Autowired 18 es privada OssService ossService; . 19 20 es // carga un método avatar 21 se @PostMapping 22 es pública R ^ uploadOssFile (un archivo MultipartFile) { 23 es 24 // Obtener carga 25 // vuelve cargar ruta oss 26 es String url =ossService.uploadFileAvatar (archivo); 27 28 retorno R.ok () de datos ( "URL". , Url); 29 } 30 }