关于一个文件下载时重命名问题。

烫烫烫烫烫130 发布于 2016/04/01 13:23
阅读 243
收藏 2

@JFinal 你好,想跟你请教个问题:

    就是我最近想实现一个功能,就是关于下载重命名的。
    我上传文件时,是把文件以时间戳命名存放。然后在数据库里有2个字段进行存放,一个是时间戳名,一个是上传时的文件名,我准备下载的文件名把它再还原成上传时的文件名。
    我目前的想法是,new一个File,然后进行renameTo,再用renderFile,但是感觉这样效率好低,还有别的方法吗?

加载中
0
JFinal
JFinal

    这个是 jfinal 2.3 中添加的功能,目前你可以用一个自定义的 MyFileRender 来做一下,大致代码是:

public class MyFileRender extends FileRender {
  private newFileName = null;
  public MyFileRender(String file, Striing newFileName) {
    super(file);
    this.newFileName = newFileName;
  }
  
  public void render() {
    // 改一下如下这行代码
    // response.setHeader("Content-disposition", "attachment; filename=" + encodeFileName(file.getName()));
    // 当 newFile != null 时,使用新的文件名即可
  }
}

   使用的时候这样用:


render(new MyFileRender(file, newFileName));
0
烫烫烫烫烫130

引用来自“JFinal”的评论

    这个是 jfinal 2.3 中添加的功能,目前你可以用一个自定义的 MyFileRender 来做一下,大致代码是:

public class MyFileRender extends FileRender {
  private newFileName = null;
  public MyFileRender(String file, Striing newFileName) {
    super(file);
    this.newFileName = newFileName;
  }
  
  public void render() {
    // 改一下如下这行代码
    // response.setHeader("Content-disposition", "attachment; filename=" + encodeFileName(file.getName()));
    // 当 newFile != null 时,使用新的文件名即可
  }
}

   使用的时候这样用:


render(new MyFileRender(file, newFileName));
public class MyFileRender extends FileRender {

	private String newFileName = null;

	public MyFileRender(String file, String newFileName) {
		super(file);
		this.newFileName = newFileName;
	}

	public void render() {
//		super.render();
		if (newFileName != null) {
			response.setHeader("Content-disposition", "attachment; filename="
					+ newFileName);
		}
	}
}

按您的说法是这样改?好像不太行哦

会出现找不到文件的情况- -。。。


0
apgmer
apgmer

引用来自“JFinal”的评论

    这个是 jfinal 2.3 中添加的功能,目前你可以用一个自定义的 MyFileRender 来做一下,大致代码是:

public class MyFileRender extends FileRender {
  private newFileName = null;
  public MyFileRender(String file, Striing newFileName) {
    super(file);
    this.newFileName = newFileName;
  }
  
  public void render() {
    // 改一下如下这行代码
    // response.setHeader("Content-disposition", "attachment; filename=" + encodeFileName(file.getName()));
    // 当 newFile != null 时,使用新的文件名即可
  }
}

   使用的时候这样用:


render(new MyFileRender(file, newFileName));
这个可以
返回顶部
顶部