Java web非项目目录下的文件(图片,视频)读取

最近在做毕业设计时,需要把文件(主要是图片和视频)放到网页上。因为不想项目太臃肿,本着数据与代码分离的想法,我把文件放在了非项目目录(磁盘目录),并在数据库中存放的也是磁盘目录(如G:\XX\XXX..)。这样一来在读取时就遇到一些问题,解决方法记录如下:
(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

猜你喜欢

转载自blog.csdn.net/isfighter/article/details/80223860