在项目中需要使用到在线浏览文件功能,由于项目中只能上传pdf和图片文件,所有就只做了预览pdf和图片的功能。

在页面中的代码如下:

<a onclick="show(show_attach?filePath="+path+"&type="+type+")">查看</a>

path:是文件存放在服务器上的位置

type:是文件的类型

js中也就只有一个打开新页面的功能,代码如下:

function show(location){
	window.open(location);
}

java后台处理代码如下:

@RequestMapping(value="/show_attach",method=RequestMethod.GET,produces = "application/json;charset=UTF-8")
	public void show_attach(HttpServletRequest request,HttpServletResponse response){
		FileInputStream bis = null;
		OutputStream os = null;
		try {
			String path = request.getParameter("filePath");//网络图片地址
        	response.setContentType("text/html; charset=UTF-8");
        	String type = request.getParameter("type");
        	if("pdf".equalsIgnoreCase(type)){
        		response.setContentType("application/pdf");
        	}else{
        		response.setContentType("image/"+type);
        	}
       	 	bis = new FileInputStream(path);
        	os = response.getOutputStream();
        	int count = 0;
        	byte[] buffer = new byte[1024 * 1024];
        	while ((count =bis.read(buffer)) != -1){
        		os.write(buffer, 0,count);
        	}
        	os.flush();
		}catch (Exception e) {
			e.printStackTrace();
		} finally {
            if (os !=null){
            	try {
            		os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
            }
            if (bis !=null){
            	try {
					bis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
            }
        }
	}

以上就完成了对pdf和图片的在线打开;由于浏览器的差异,有些浏览器可能会弹出下载提示框。