Carga de archivos (utilizando el almacenamiento de objetos en la nube de Qiniu)

Carga de archivos mediante el almacenamiento de objetos en la nube de Qiniu

1. ¿Por qué no guardar el archivo en el servidor de aplicaciones?

Debido a que el archivo se almacena en el servidor de aplicaciones, el archivo será más grande que los datos JSON ordinarios. Cada vez que se lea el archivo, el archivo debe leerse desde el servidor de aplicaciones, lo que consumirá más tiempo y ancho de banda, y el tiempo de respuesta de el servidor de aplicaciones aumentará. En el proceso de desarrollo real, implementaremos los archivos por separado.

2. Uso básico de Qiniu Cloud

Dirección: https://www.qiniu.com/
requiere autenticación.
Después de la autenticación, ingrese a la consola -> Almacenamiento de objetos -> Administración de espacio
para crear un nuevo espacio
inserte la descripción de la imagen aquí

recuerda el nombre de tu espacio

Vaya a administración de claves y copie su AK y SK
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

3. Archivo de configuración

dependencias expertas

 <dependency>
        <groupId>com.qiniu</groupId>
        <artifactId>qiniu-java-sdk</artifactId>
        <version>[7.7.0, 7.7.99]</version>
    </dependency>

yml
complete lo que acaba de copiar aquí
inserte la descripción de la imagen aquí

Cuarto, el servidor

Nota: los archivos no se pueden serializar, por lo que no se puede imprimir el registro. ! ! (El blogger anotó la impresión del registro)

@PostMapping("/applyRoleFile")
@PreAuthorize("hasAuthority('normal')")
//@SystemLog(businessName = "申请角色")
public ResponseResult applyRoleFile(@RequestBody MultipartFile file) {
    
    
    return userService.applyRoleFile(file);
}
@Data
@Service
@ConfigurationProperties(prefix = "oss")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    
    
    //上传凭证
    private String accessKey;
    private String secretKey;
    private String bucket;

  @Override
    public ResponseResult applyRoleFile(MultipartFile file) {
    
    
        //判断文件类型
        //获取原始文件名
        String originalFilename = file.getOriginalFilename();
        //对原始文件名进行判断.
        // 只要pdf文件
        if (!originalFilename.endsWith(".pdf")) {
    
    
            throw new SystemException(AppHttpCodeEnum.FILE_TYPE_ERROR);
        }
        //生成默认文件名
        String filePath = PathUtils.generateFilePath(originalFilename);
        //判断通过上传文件到OSS
        String url = uploadOSS(file, filePath);



     /**
	这里是将地址url更新到数据库 这里就不展示了 主要是前面的那一块
	*/
        return ResponseResult.okResult();
    }

	private String uploadOSS(MultipartFile file, String filePath) {
    
    
	    //构造一个带指定 Region 对象的配置类
	    // 即你的空间是哪个地区,这里使用自动帮你填写
	    Configuration cfg = new Configuration(Region.autoRegion());
	
	    UploadManager uploadManager = new UploadManager(cfg);
	
	    //默认不指定key的情况下,以文件内容的hash值作为文件名
	    String key = filePath;
	
	    try {
    
    
	        InputStream inputStream = file.getInputStream();
	        Auth auth = Auth.create(accessKey, secretKey);
	        String upToken = auth.uploadToken(bucket);
	
	        try {
    
    
	            Response response = uploadManager.put(inputStream, key, upToken, null, null);
	            //解析上传成功的结果
	            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
	            //这个是上传到七牛云服务器的路径定义
	            return "http://r9yeel75m.hn-bkt.clouddn.com/" + key;
	        } catch (QiniuException ex) {
    
    
	            Response r = ex.response;
	            System.err.println(r.toString());
	            try {
    
    
	                System.err.println(r.bodyString());
	            } catch (QiniuException ex2) {
    
    
	                //ignore
	            }
	        }
	    } catch (FileNotFoundException e) {
    
    
	        e.printStackTrace();
	    } catch (IOException e) {
    
    
	        e.printStackTrace();
	    }
	    return "error";
	}

5. prueba

prueba con cartero
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_51799151/article/details/124018360
Recomendado
Clasificación