瞬间动力 2017-11-23 13:58 采纳率: 12.5%
浏览 7570

javaWeb项目本地的文件下载没问题,部署到服务器上就无法文件下载

下载文件的代码如下:
项目在本地调试的时候,是可以正常下载本地磁盘的文件的,然后我部署到一台远程机器上,所要下载的文件能够得到他的路径,但是也不报错就是页面没有下载到文件,这是为什么?
备注:1.我在浏览器去访问那个文件的路径,404访问不到,虽然在WEB-INF下面放着。
访问路径:http://10.10.3.149:8080/alitm/WEB-INF/upload/d9209cf6856e427495dd78e4cf3d24d3_result.csv

[b]package com.ecsemir.utils;

import com.ecsemir.entity.ExceptUpload;
import org.springframework.context.annotation.Scope;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

/**

  • Created by zhuxiaofan01 on 2017/11/7.
  • 文件上传
    */
    @Scope("prototype")
    public class DownloadFile {

    public static void getDownloadFile(HttpServletRequest request, HttpServletResponse response,ExceptUpload exceptUpload)
    throws IOException, ServletException {
    //得到要下载的文件路径
    String fpath = exceptUpload.getPath_resultCsv();
    String filepath = request.getSession().getServletContext().getRealPath(fpath);
    //获取时间
    String res;
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
    String time=simpleDateFormat.format(new Date());
    //得到文件名
    int index1=filepath.lastIndexOf("_");
    int index2=filepath.lastIndexOf(".");
    String fileName=time+filepath.substring(index1+1,index2)+".csv";
    System.out.println("---------------------------fileName:"+fileName+"-----------------"+filepath);
    fileName = new String(fileName.getBytes("iso8859-1"), "UTF-8");
    //得到要下载的文件
    File file = new File(filepath);
    //如果文件不存在
    if (!file.exists()) {
    request.setAttribute("message", "您要下载的资源已被删除!!");
    request.getRequestDispatcher("/except/downloadlist.jsp").forward(request, response);
    return;
    }
    //设置响应头,控制浏览器下载该文件
    response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
    //读取要下载的文件,保存到文件输入流
    FileInputStream in = new FileInputStream(file);
    //创建输出流
    OutputStream out = response.getOutputStream();
    //创建缓冲区
    byte buffer[] = new byte[1024];
    int len = 0;
    //循环将输入流中的内容读取到缓冲区当中
    while ((len = in.read(buffer)) > 0) {
    //输出缓冲区的内容到浏览器,实现文件下载
    out.write(buffer, 0, len);
    }
    //关闭文件输入流
    in.close();
    //关闭输出流
    out.close();

    }
    }[/b]

  • 写回答

6条回答 默认 最新

  • 王庆禹 2017-11-23 14:15
    关注

    服务器是不是没配置文件夹的权限

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题