1. 功能

    文件上传组件,支持同时传多个文件及每个文件的进度条,支持文件名后缀,支持文件删除。

  2. 参数

    参数名 参数类型 是否必须 默认值 描述
    name java.lang.String 元素 id 和 name 属性的值
    value java.lang.String 文件 ID,多个以","号分隔
    fileSize java.lang.String 30 单个文件的大小
    fileTypes java.lang.String 文件类型
    fileTypesDesc java.lang.String 文件类型描述
    desc java.lang.String “上传” 按键显示文字
    filePath java.lang.String 指定ftp相对路径,如:home/work/logs,不能以“/”开始,不能包含“../”,目录层次不超过5级
    ftpSite java.lang.String fileman.ftp.default 所配置 描述 FTP名称,指定上传的ftp服务器,结合配置说明 >应用全局配置 > 文件资源配置
    fileLimit java.lang.String 30 上传文件数量限制
  3. 使用说明

    文件上传下载依赖于单独的 Servlet,框架提供默认的实现,com.ailk.web.view.servlet.file.FileServlet;

    业务上需要定制开发文件的存储,文件 ID 的生成及管理,及文件的查询、删除。

  4. Java API

    com.ailk.web.view.servlet.file.IFileAction
    /**
     * 查询显示已上传的文件列表
     * 返回的数据结构必须是{fileId:{fileId:xx,fileName:xx,fileSize:xx,fileType:xx}},否则解析失败
     * @param config 初始化FileServlet参数
     * @param params 前台传入所有参数
     * @param fileIds 文件列表 以,分隔
     * @param ftpSite FTP站点
     * @return
     */
    public IDataBus query(Map<String, String> config,Map<String,String[]> params, String fileIds,String ftpSite);
    
    /**
     * 文件删除,成功返回0
     * @param config 初始化FileServlet参数
     * @param params 前台传入所有参数
     * @param fileId 文件id
     * @param ftpSite FTP站点
     * @throws Exception
     */
    public int delete(Map<String, String> config,Map<String,String[]> params, String fileId,String ftpSite) ;
    
    /**
     * 文件上传,成功返回fileId,失败返回小于0的整形字符串
     * @param config 初始化FileServlet参数
     * @param file  上传文件信息
     * @param params 前台传入所有参数
     * @param ftpSite FTP站点
     * @throws Exception
     */
    public String upload(Map<String, String> config, FileItem file,Map<String,String[]> params,String ftpSite)  throws IOException;
    
    /**
     * 文件下载,成功返回0
     * @param config 初始化FileServlet参数
     * @param response HttpServletResponse
     * @param fileId 文件id
     * @param real_name 文件重命名
     * @param ftpSite FTP站点
     * @param params 前台传入所有参数
     * @throws Exception
     */
    public int download(Map<String, String> config,HttpServletResponse response, String fileId,String real_name,String ftpSite,Map<String,String[]> params) ;
    
    /**
     * 查看文件,成功返回0
     * @param config 初始化FileServlet参数
     * @param params 前台传入所有参数
     * @param fileId 文件id
     * @param ftpSite FTP站点
     */
    public int show(Map<String, String> config,Map<String,String[]> params, String fileId,String ftpSite);
    
    /**
     * 操作合法性验证,包括访问的权限,访问的文件目录等
     * @param config 初始化FileServlet参数
     * @param params 前台传入所有参数
     * @param fileId 文件id
     * @param ftpSite FTP站点
     * @return
     * @throws Exception
     */
    public boolean isValidate(Map<String, String> config,Map<String,String[]> params, String fileId,String ftpSite) ;
    
    /**
     * 限制上传文件的最大值,默认是FILE_MAX_SIZE(30M)
     * @return
     */
    public int getMaxSize();
    
    /**
     * 获取单个文件存在内存中的阀值大小,默认是FILE_THRESHOLD_SIZE(300kb)
     * @return
     */
    public int getThresholdSize();
    
    /**
     * 获取文件临时存放的磁盘目录,默认是System.getProperty("java.io.tmpdir");
     * @return
     */
    public String getTempRepository();
    
    /**
     * 获取upload,download,delete,show的返回值获取返回结果
     * @param actionCode
     * @return
     */
    public String getActionInfo(int actionCode);
    
    /**
     * 生成文件id
     * @param config 初始化FileServlet参数
     * @param params 前台传入所有参数
     * @param fileItem 上传文件信息
     * @return
     */
    public String makeFileId(Map<String, String> config,Map<String,String[]> params,FileItem fileItem);
    
    /**
     * 文件上传后执行
     * @param config 初始化FileServlet参数
     * @param params 前台传入所有参数
     * @param fileItem 上传文件信息
     * @return
     */
    public void afterUpload(Map<String, String> config,Map<String,String[]> params,FileItem fileItem);
    
  5. 示例

    1. HTML 代码

      <input jwcid="@Upload"
      	name="uploadtest"
      	ftpSite="ftpdiy"
      	filePath="a/b/c/d"
      	fileSize="20"
      	fileTypes="*.txt;*.rar"
      />
      
    2. web.xml代码

      <servlet>
      	<servlet-name>attach</servlet-name>
      	<servlet-class>com.ailk.web.view.servlet.file.FileServlet</servlet-class>
      	<load-on-startup>0</load-on-startup>
      	<init-param>
      		<param-name>action</param-name>
      		<param-value><!-- IFileAction 的实现类 不配置则使用 com.ailk.web.view.servlet.file.DefaultFileAction --></param-value>
      	</init-param>
      </servlet>
      <servlet-mapping>
      	<servlet-name>attach</servlet-name>
      	<url-pattern>/attach</url-pattern>
      </servlet-mapping>
      
  6. 图示

    1. 初始状态

      • 附件:
    2. 单击按钮显示上传面板

      上传文件
      已上传:2 个文件 | 限制大小:30M
      标识 文件 大小(B) 上传进度 操作
      1355125789864 关于加强对系统账号弱密码校验和控制的需求BOSSREQ201211159342 工作量安排表.xls 728123 100.00% 删除
      1355125790022 图片附件1.jpg 49331 100.00% 删除
      1355125790147 图片附件2.jpg 41134 44.00% 删除
      1355125790235 演示用号码列表.txt 441 Prepare 删除
      1355125790359 配置文件.xml 52890 Prepare 删除
    3. 传输完成,返回结果至输入框

      1. 一般形式

        • 附件:
      2. 带 ID 的形式

        • 附件: