Java實現(xiàn)點(diǎn)擊下載文件的時候,彈出“另存為”對話框,選擇保存位置,然后下載,代碼如下:
創(chuàng)新互聯(lián)建站是一家專業(yè)提供重慶企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為重慶眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
public?void?downLoad(String?filePath,?HttpServletResponse?response)?
throws?Exception?{?
System.out.println("filePath"+filePath);?
File?f?=?new?File(filePath);?
if?(!f.exists())?{?
response.sendError(404,?"File?not?found!");?
return;?
}?
BufferedInputStream?br?=?new?BufferedInputStream(new?FileInputStream(f));?
byte[]?buf?=?new?byte[1024];?
int?len?=?0;?
response.reset();?
response.setContentType("application/x-msdownload");?
response.setHeader("Content-Disposition",?"attachment;?filename="?+?f.getName());?
OutputStream?out?=?response.getOutputStream();?
while?((len?=?br.read(buf))??0)?out.write(buf,?0,?len);?
br.close();?
out.close();?
}
response.setContentType("application/x-download");//設(shè)置為下載application/x-download
String filedownload = path;//即將下載的文件的相對路徑
String filedisplay = fileName;//下載文件時顯示的文件保存名稱
String filenamedisplay = URLEncoder.encode(filedisplay,"utf-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
然后把文件流給response的outputStream
你現(xiàn)在這么直接執(zhí)行可能是在頁面沒有返回的super.writeJson(json);信息你就認(rèn)為不執(zhí)行了,你先進(jìn)行調(diào)試一下 ,看看到哪步卡住了。我懷疑很可能是super.writeJson(json);這個用的哪里不對可能沒返回給頁面信息。你可以在這個上一步進(jìn)行一下打印隨意信息看看能不能到這塊。確定一下是哪步停住了,然后針對的再找問題。