猿问

Java后台生成文件,前台无法下载

在后台生成了docx文件,保存在相对路径。
然后前台点击文件列表来获取相对路径文件目录下的所有文件,以列表的形式,展示。
但是每次生成了文件无法下载,必须重启项目之后,才能下载。
直接生成,直接下载,浏览器会报找不到文件的错误,但是重启项目之后,就可以下载了。

前台代码:

 <table class="table table-striped table-hover">
            <tr>
            <% for (path in FilePaths){
            %>
            <a href="/static/docx/major/${path.key}" download="${path.key}">${path.key}</a>

            <% } %>
            </tr>
        </table>

后台代码:

@Override
public Map getFileList() {

    Map<String,String> map = new HashMap();

    String srcPath="src/main/webapp/static/docx/major";
    File file = new File(srcPath);

    String[] files = file.list();

    for (String str:files){
        map.put(str,srcPath+"/"+str);
    }
    return map;
}


斯蒂芬大帝
浏览 1380回答 4
4回答

慕妹3242003

你这种写法是直接读取webapp目录下面的文件,这个目录下面新增或者修改文件都是要重启生效的。这就是为什么你要重启生效的原因。你可以在前端引用一个后台的地址,在后台的方法中输出文件流。

鸿蒙传说

你的文件路径最好不要放到项目下,跟项目分离,否则会受到项目影响

温温酱

首先你要区分服务端和客户端,后端项目部署之后是服务端,你只需要改服务端的文件下载路径,浏览器调用时传参到服务端,服务端获取路径下载对应的文件,服务端或者说jsp什么都不需要做,只传参回去出发下载动作就好

拉风的咖菲猫

你的下载逻辑可以放在后端试一试啊,为什么要在页面上写下载逻辑呢?后台生成要下载的文件之后直接下载,还不用将文件路径传到前台了
随时随地看视频慕课网APP

相关分类

Java
我要回答