2025-05-07 17:23

我直接定义一个MyFileRender继承自FileRender,再把里面的代码抄过来,改一下Content-disposition就可以了。


public class MyFileRender extends FileRender {
public MyFileRender(File file, String downloadFileName) {
super(file, downloadFileName);
}

@Override
public void render() {
if (file == null || !file.isFile()) {
RenderManager.me().getRenderFactory().getErrorRender(404).setContext(request, response).render();
return ;
}

// ---------
response.setHeader("Accept-Ranges", "bytes");
String fn = downloadFileName == null ? file.getName() : downloadFileName;
response.setHeader("Content-disposition", "inline; " + encodeFileName(request, fn));
String contentType = servletContext.getMimeType(file.getName());
response.setContentType(contentType != null ? contentType : DEFAULT_CONTENT_TYPE);

// ---------
if (normalRenderOnly || StrKit.isBlank(request.getHeader("Range"))) {
normalRender();
} else {
rangeRender();
}
}
}

2025-05-07 16:54

@羊羊羊羊 可以了,create()里面加参数就行了

2025-05-07 15:56

@JFinal 这个问题现在解决了吗?好像3楼的代码现在已经用不了了

2025-05-07 15:50

@JFinal 这个Header是服务端设置的,并且更改不了。后面我参考论坛上其它朋友的做法,重新了一个FileRender才能设置了,解决了我的问题。还是谢谢大哥

2025-04-29 09:30

@JFinal 大哥,您好,renderFile(new File());的时候,Content-Disposition是会被设置为attachment;的,这样会导致浏览器以保存附件的方式下载文件。
有一些场景我是想以页面显示的方式显示文件的,比如说一些图片或者标签中的pdf文件。而我在
renderFile(new File(r.getStr("path")));
之后,手工添加了
getResponse().setHeader("Content-Disposition", "inline; filename=\"" + r.getStr("filename") + "\"");
结果也是不行,后面他还是会把"Content-Disposition" 这个设置为attachment,无法在页面中直接显示。
请问大佬有没有优化的方案呢?

2021-10-22 10:56

我也被这个困扰了好久,然后把的provided注掉就行了