遠程讀取,本地保存

<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.io.*"%>
<jsp:useBean id="str" scope="page" class="getStr.getStr"/>
<%
String Filename = request.getParameter("FileName");//接收傳過來的文件名
if(Filename==null){Filename = "";}
else{Filename=str.getStr(Filename);}
String Path = request.getParameter("Path");//接收傳過來的文件對應的文件夾

File file = new File(request.getRealPath("/")+"MsgPerson/"+Path+"/"+Filename);
out.print(file);
if(!file.exists())
out.println("文件不存在,請聯繫系統管理員!");
else{
//得到文件名字和路徑
String filename = "";
String S_FilePath=request.getRealPath("/")+"MsgPerson//"+Path+"//"+Filename;

int pos = 0;
pos = S_FilePath.lastIndexOf("//");//找到最後一個"//"記錄其後的字符數

if(pos != -1)
filename = S_FilePath.substring(pos+1, S_FilePath.length()); //取出附件名
String strChina = new String(filename.getBytes("gb2312"),"iso8859-1");

// 設置響應頭和下載保存的文件名
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=/"" + strChina+ "/"");

// 打開指定文件的流信息
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);

// 寫出流信息
int totalRead = 0;
int readBytes = 0;
long fileLen = file.length();
byte b[] = new byte[65000];//設置緩存大小
response.resetBuffer();
while((long)totalRead < fileLen)
{
readBytes = fileInputStream.read(b);
totalRead += readBytes;
response.getOutputStream().write(b, 0, readBytes);
}
fileInputStream.close();
}
%> 
發佈了31 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章