下载文件的代码如下:
项目在本地调试的时候,是可以正常下载本地磁盘的文件的,然后我部署到一台远程机器上,所要下载的文件能够得到他的路径,但是也不报错就是页面没有下载到文件,这是为什么?
备注: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]