導航:首頁 > 文件教程 > jsp文件流下載

jsp文件流下載

發布時間:2023-09-22 20:03:40

jsp如何實現下載dbf文件

1.最直接最簡單的,方式是把文件地址直接放到html頁面的一個鏈接中。這樣做的缺點是把文件在伺服器上的路徑暴露了,並且還無法對文件下載進行其它的控制(如許可權)。這個就不寫示例了。

2.在伺服器端把文件轉換成輸出流,寫入到response,以response把文件帶到瀏覽器,由瀏覽器來提示用戶是否願意保存文件到本地。(示例如下)

<%
response.setContentType(fileminitype);
response.setHeader("Location",filename);
response.setHeader("Cache-Control", "max-age=" + cacheTime);
//filename應該是編碼後的(utf-8)
response.setHeader("Content-Disposition", "attachment; filename=" + filename);

response.setContentLength(filelength);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;

%>

3.既然是JSP的話,還有一種方式就是用Applet來實現文件的下載。不過客戶首先得信任你的這個Applet小程序,由這個程序來接受由servlet發送來的數據流,並寫入到本地。

servlet端示例

public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType(" text/plain ");
OutputStream outputStream = null;
try {
outputStream = res.getOutputStream();
//把文件路徑為srcFile的文件寫入outputStream中
popFile(srcFile, outputStream)) ;

} catch (IOException e) {
e.printStackTrace();
}
}

JApplet端示例

URLConnection con;
try {
//url是被調用的SERVLET的網址 如 *.do
con = url.openConnection();
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type",
"application/octet-stream");
InputStream in = con.getInputStream();
ProgressMonitorInputStream pmInputStream = new ProgressMonitorInputStream
(pane, "正在從伺服器下載文件內容", in);
ProgressMonitor pMonitor = pmInputStream.getProgressMonitor();
pMonitor.setMillisToDecideToPopup(3);
pMonitor.setMillisToPopup(3);
//localfilepath本地路徑,localstr文件文件夾,filename本地文件名
String localfilepath = localstr + filename ;
//方法saveFilsaveFilee是把輸入流pmInputStream寫到文件localfilepath中
if(saveFilsaveFilee(localfilepath,pmInputStream)){
openLocalFile(localfilepath);
}

4.順便把JApplet上傳文件的代碼也貼上來.

JApplet端示例

URLConnection con;
try {
con = url.openConnection();
//url是被調用的SERVLET的網址 如 *.do
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type","application/octet-stream");
OutputStream out = con.getOutputStream();
//localfilepath本地路徑,localstr文件文件夾,filename本地文件名
String localfilepath = localstr + filename;
//文件getOutputStream是把文件localfilepath寫到輸出流out中
getOutputStream(localfilepath,out);
InputStream in = con.getInputStream();
return true;
}catch (IOException e) {
System.out.println("文件上傳出錯!");
e.printStackTrace();
}

servlet端代碼示例

public void service(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {
res.setContentType(" text/plain ");
InputStream inputStream = null;
try {
inputStream = res.getInputStream();
//把輸入流inputStream保存到文件路徑為srcFile的文件中
writefile(srcFile, inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} // end service

總結:在文件的傳輸中是流的形式存在的,在硬碟上是文件的形式存在的。我們要做的只是通過HttpServletRequest和HttpServletResponse,或者是response和request來發送流和讀取流。以及把文件轉換成流或把流轉換成文件的操作。

❷ jsp頁面如何實現下載文檔

jsp頁面下載文檔是在jsp中有一個a標簽 ,當用戶點擊a標簽的時候下載文件。
一般採用href屬性直接指向一個伺服器地址,只要鏈接的文件存在,就會給出彈出保存對話框.
點擊a標簽 先執行onclick事件,再請求href中指向的地址。
前端jsp:
<a href="#" onclick="javascript:downloadtest('${app.id}')" id="pluginurl" style="color: #83AFE2;text-decoration:underline;"></a>

然後在js中:
function downloadtest(id){
var url = "<%=request.getContextPath()%>/app/download" + "/" + id;
$("#pluginurl").attr("href",url);
}
後台處理下載邏輯的java代碼:

/**
* 下載文件
* @param id appid
* @param response
*/
@RequestMapping(value="/download/{id}")
public void download(@PathVariable String id, HttpServletResponse response){
String filepath = "";
Result result = appService.getAppById(id);
App app = (App) result.getMap().get("app");
if(app == null){
return;
}
filepath = app.getUrl();

File file = new File(filepath);
InputStream inputStream = null;
OutputStream outputStream = null;
byte[] b= new byte[1024];
int len = 0;
try {
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();

response.setContentType("application/force-download");
String filename = file.getName();
filename = filename.substring(36, filename.length());
response.addHeader("Content-Disposition","attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
response.setContentLength( (int) file.length( ) );

while((len = inputStream.read(b)) != -1){
outputStream.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(inputStream != null){
try {
inputStream.close();
inputStream = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if(outputStream != null){
try {
outputStream.close();
outputStream = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

❸ JSP做的簡單的文件上傳下載代碼

暈,給你寫完了,人怎麼沒了呢……

❹ jsp 如何實現文件上傳和下載功能

上傳:

MyjspForm mf = (MyjspForm) form;// TODO Auto-generated method stub

FormFile fname=mf.getFname();

byte [] fn = fname.getFileData();

OutputStream out = new FileOutputStream("D:\"+fname.getFileName());

Date date = new Date();

String title = fname.getFileName();

String url = "d:\"+fname.getFileName();

Upload ul = new Upload();

ul.setDate(date);

ul.setTitle(title);

ul.setUrl(url);

UploadDAO uld = new UploadDAO();

uld.save(ul);

out.write(fn);

out.close();

下載:

DownloadForm downloadForm = (DownloadForm)form;

String fname = request.getParameter("furl");

FileInputStream fi = new FileInputStream(fname);

byte[] bt = new byte[fi.available()];

fi.read(bt);

//設置文件是下載斗喊還是打開以及打開的方式msdownload表示下載粗彎;設置字湖集,//主要是解決文件中的中文信息

response.setContentType("application/msdownload;charset=gbk");

//文件下載後的默認保存名及打開方式

String contentDisposition = "attachment; filename=" + "java.txt";

response.setHeader("Content-Disposition",contentDisposition);

//設岩銷悶置下載長度

response.setContentLength(bt.length);

ServletOutputStream sos = response.getOutputStream();

sos.write(bt);

return null;

❺ jsp 下載文件路徑問題

下載文件復有兩種方式。
1.是在制你的伺服器上能相對找到。
即http://localhost8080/web 這個映射的是你伺服器上的D:\web這個目錄
那麼你這個文件就要在D:\web這個目錄中。
比如D:\web\downfile\111.xls
你的超鏈接可以這樣寫。 <a href="/downfile/111.xls">download</a>
2.就是用流的方式下載。
<a href="#" onclilck="......">download</a>
這樣的超鏈接就不是指向一個文件了,而是向伺服器提交下載申請。
這樣執行到你後台的servlet類中,你可以根據一些必要的標識知道你要下載的文件。
這樣你把D:\111.xls文件讀取出來。然後寫入到response.getOutPutStream (這個方法有些記不清了,你查一下) 這樣實現下載。

閱讀全文

與jsp文件流下載相關的資料

熱點內容
電腦沒聯網怎麼拷貝文件 瀏覽:224
wps工具欄怎麼換成中文 瀏覽:338
win7和xp共享文件 瀏覽:883
蘋果4代音量鍵沒反應 瀏覽:827
怎樣打開tif文件 瀏覽:153
java下載文件zip 瀏覽:440
qq瀏覽器壓縮文件怎麼設密碼 瀏覽:526
黃埔數控編程哪裡好 瀏覽:406
mac109升級1010 瀏覽:691
在java的菜單如何導入文件 瀏覽:982
現在什麼網站銷量最高 瀏覽:760
angularjsclass定義 瀏覽:157
ug數控編程怎麼導出程序 瀏覽:466
cmdb文件 瀏覽:710
鵯文件夾 瀏覽:763
網路輿情應對的基本理念是什麼 瀏覽:433
word2007層次結構 瀏覽:456
去掉文件名的數字 瀏覽:713
word公司 瀏覽:710
淘寶店數據包怎麼上傳 瀏覽:341

友情鏈接