All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.houkunlin.system.common.aop.DownloadFile Maven / Gradle / Ivy

The newest version!
package com.houkunlin.system.common.aop;

import org.springframework.http.MediaType;

import java.lang.annotation.*;

/**
 * 文件下载
 *
 * @author HouKunLin
 */
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DownloadFile {
    /**
     * 单个文件名称,或者压缩包名称
     * 

可自行实现 {@link TemplateParser} 接口来解析字符串模板,默认提供 {@link TemplateParserDefaultImpl} 来支持 SpEL 模板表达式解析 */ String filename() default ""; /** * 下载资源来源 * 支持写法格式: *

    *
  1. 默认实现:classpath:template.xlsx
  2. *
  3. 需自行实现:file:template.xlsx
  4. *
  5. 需自行实现:oss:template.xlsx
  6. *
* 具体支持的写法格式请参考 {@link DownloadFileHandler} 实现细节 */ String source() default ""; /** * 强制打包压缩 */ boolean forceCompress() default false; /** * 打包压缩类型 */ String compressFormat() default "zip"; /** * 下载文件的文件内容类型 */ String contentType() default MediaType.APPLICATION_OCTET_STREAM_VALUE; /** * 浏览器预览,需要与 {@link #contentType()} 配合使用。 */ boolean inline() default false; /** * 浏览器预览,需要与 {@link #contentType()} 配合使用。 *

自动识别请求参数 {@link #inlineParam()} 的值来设置 {@link #inline()} 参数。 *

设置了该参数时,该参数的效果将比 {@link #inline()} 参数设置优先级高,如果请求中不存在该参数,则使用 {@link #inline()} 值。 *

@DownloadFile(inlineParam = "inline") 效果如下: *

请求 /api/?inline 时 inline 值为 true
* 请求 /api/?inline=true 时 inline 值为 true
* 请求 /api/?inline= 时 inline 值为 true
* 请求 /api/?inline=false 时 inline 值为 false
* 请求 /api/?inline=1 时 inline 值为 false
* 请求 /api/?inline=0 时 inline 值为 false *

*/ String inlineParam() default ""; /** * 响应头信息, * headers[0] 为请求头KEY, headers[1] 为请求头VALUE,两个为一组,以此类推 */ String[] headers() default {}; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy