總是顯示文件不存在下載失敗 不知道問題出在哪里
我的老是顯示文件不存在下載失敗 是不是在寫文件名稱的時候出錯了呢?
在下載:<a href="download?filname=1.jpg">圖片</a> ${errorResult}
圖片1.jpg在WebContent/images下
package com.java1234.web;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet extends HttpServlet {
/**
*?
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//獲取文件下載路徑
String path=getServletContext().getRealPath("/")+"images";//下載的文件都放在images文件目錄下
String filename=request.getParameter("filname");//獲取到從前臺得到的文件名稱
File file=new File(path+filename);//讀取文件
if(file.exists()){
//設(shè)置相應(yīng)類型application/octet-stream
response.setContentType("application/x-msdownload");
//設(shè)置頭信息
response.setHeader("Content-Disposition","attachment=\""+filename+"\"");
InputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();
byte b[]=new byte[1024];
int n;
while((n=inputStream.read(b))!=-1){
outputStream.write(b,0,n);
}
//關(guān)閉流,釋放流
outputStream.close();
inputStream.close();
}else{
request.setAttribute("errorResult","文件不存在下載失敗!");
//重定向轉(zhuǎn)發(fā)到j(luò)sp
RequestDispatcher dispatcher=request.getRequestDispatcher("download.jsp");
dispatcher.forward(request,response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)?
throws ServletException, IOException {
this.doGet(request, response);
}
}
2016-11-22
String path=getServletContext().getRealPath("/")+"images";
image后面少了一個 斜杠 /