后台实现
public synchronized String openText() throws IOException{
InputStream inputStream = null;
OutputStream outputStream = null;
try {
URL url=new URL(storePath);//此处是通过http访问的url,如果是打开本地的文件则换成 File file = new File("D:/test.txt");
inputStream = url.openStream();
HttpServletResponse response = ServletActionContext.getResponse();//生成response对象
response.setContentType("application/download");
response.setCharacterEncoding("UTF-8");
String fileName = url.getFile();
fileName = URLEncoder.encode(fileName,"UTF-8");//防止中文乱码
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes()));//添加下载文件名称
outputStream = response.getOutputStream();
int i = 0;
byte buffer[] = new byte[1024];
while ((i=inputStream.read(buffer))!=-1) {
outputStream.write(buffer,0,i);
}
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(outputStream != null && inputStream != null){
outputStream.close();
inputStream.close();
}
}
return null;
}
实现的原理:读取流输出到本地页面,返回值为null就会弹出如下页面