最近在做毕业设计时,需要把文件(主要是图片和视频)放到网页上。因为不想项目太臃肿,本着数据与代码分离的想法,我把文件放在了非项目目录(磁盘目录),并在数据库中存放的也是磁盘目录(如G:\XX\XXX..)。这样一来在读取时就遇到一些问题,解决方法记录如下:
(1)图片的读取
在jsp页面中用<img>标签显示图片,其src属性支持流,于是解决思路是写一个servlet,用输入流读入图片,再用响应流输出。在src中写servlet的地址
servlet代码如下:
jsp页面如下:
视频播放器使用的是flowplayer,flowplayer的详细使用见
[FlowPlayer 参数说明_侯小伟][1]
href不能写磁盘路径,使用虚拟路径解决这个问题
虚拟路径的配置如下:
在tomact的server.xml文件中的<host>标签中添加如下内容:
[1]: https://www.cnblogs.com/microstep/p/4972997.html
(1)图片的读取
在jsp页面中用<img>标签显示图片,其src属性支持流,于是解决思路是写一个servlet,用输入流读入图片,再用响应流输出。在src中写servlet的地址
servlet代码如下:
ReadFileFromDisk.servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); //filepath为图片的磁盘路径 String filepath = request.getParameter("filepath"); String transpath = filepath.replace("\\", "/"); FileInputStream fis = new FileInputStream(transpath); OutputStream os = response.getOutputStream(); try { int count = 0; byte[] buffer = new byte[1024 * 1024]; while ((count = fis.read(buffer)) != -1) os.write(buffer, 0, count); } catch (IOException e) { e.printStackTrace(); } finally { if (os != null) os.close(); if (fis != null) fis.close(); } }
jsp页面如下:
<img src="ReadFileFromDisk?filepath=${filepath}" alt="加载失败"/>(2)视频的读取
视频播放器使用的是flowplayer,flowplayer的详细使用见
[FlowPlayer 参数说明_侯小伟][1]
href不能写磁盘路径,使用虚拟路径解决这个问题
虚拟路径的配置如下:
在tomact的server.xml文件中的<host>标签中添加如下内容:
<Context path="/file" docBase="G:\profile\video\" debug="0" reloadable="true"/>即将G:\\profile\\video\\映射成/file,这样若访问G:\\profile\\video\\a.mp4,便可以再href中写:/file/a.mp4
[1]: https://www.cnblogs.com/microstep/p/4972997.html