后台实现
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就会弹出如下页面
