文件上传和文件获取及ckplay地址
来源:互联网 发布:巨人的陨落英文版 知乎 编辑:程序博客网 时间:2024/06/18 11:49
文件上传,上传的地址在项目路径外。
比如现在上传到到E:\upload\uploadFile下。
文件类型为视频类型。
这个时候需要自己建一个servlet。因为如果要播放视频,需要将路径映射到E:\upload下。
这样读取视频就会非常方便。
代码:注意:url。这个后面要用上的。
@WebServlet(asyncSupported=true//支持异步,urlPatterns={"/templates/*"}//路径,loadOnStartup=2,name="myDefault",initParams={//配置文件路径})public class DefaultServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fullPath = getRealPath(request); response.setDateHeader("Expires", System.currentTimeMillis() + 1000 * 60 * 60 * 24); response.setHeader("Cache-Control", "max-age=60"); ServletOutputStream os = response.getOutputStream(); FileInputStream is = null; try { is = new FileInputStream(fullPath); IOUtils.copy(is, os); } catch (FileNotFoundException e) { response.setStatus(404); return; } finally { if (null != is) { is.close(); } if (os != null) { os.flush(); os.close(); } } } private String getRealPath(HttpServletRequest request) { String cxtPath = request.getContextPath(); String pathInfo = request.getPathInfo(); String uri = request.getRequestURI().substring(cxtPath.length()); if(pathInfo == null){ pathInfo = uri; } String contentFilePath = Constants.UPLOAD_FILE.replaceAll("\\\\", "/"); return contentFilePath+pathInfo; } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected long getLastModified(HttpServletRequest request) { String fullPath = getRealPath(request); File file = new File(fullPath); if (file.exists()) { return file.lastModified(); } else { return super.getLastModified(request); } }}
Constants.UPLOAD_FILE即为上传到的地址。
上传的地址都统一将Constants.UPLOAD_FILE(E:\upload\uploadFile)给去掉,最后只剩下一段存储的路径。为什么要去掉?因为以后可能会改变上传的地址。所以改变。
接着,比如我要播放视频,用的ckplay,代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="r" uri="r-tag"%><%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%><input type="hidden" id="videoPath" value="${uploadFilePath }${resourceUri }"> <div class=""> <div id="a1" class="text-center"></div></div><script src="<c:url value="/resources/js/ckplayer/ckplayer.js" />"></script><script type="text/javascript" charset="utf-8">var hostPost = "http://"+window.location.host;var flashvars = {f : ROOT_PATH+ $("#videoPath").val(),c : 0,b : 1,x : ''};var params = {bgcolor : '#FFF',allowFullScreen : true,allowScriptAccess : 'always',hostPost:window.location.host};CKobject.embedSWF(hostPost + '/resources/js/ckplayer/ckplayer.swf','a1', 'ckplayer_a1', '96%', '100%', flashvars, params); </script>
如果这里用的是超酷播放器,需要格外注意的是:hostPost。
如果hostPost是localhost:8080,而没有加上http://,那么将会播放不出任何东西。(这个问题想了半天,,,一定要记住)奇怪的是firBug也没报错,,,
然后这里有个${uploadFilePath}和${resourceUri}。
${uploadFilePath}为"/templates/",这个因为servlet要处理这种请求来获取上传的资源。
这样写有个好处,因为我上传的资源还有HTML包,也就是一大堆的HTML静态文。
这些HTML文件之间是有联系的。
而这样获取文件,会非常方便。
附上web.xml的servlet配置
<servlet><servlet-name>myDefault</servlet-name><servlet-class>com.boventech.util.DefaultServlet</servlet-class></servlet><servlet-mapping><servlet-name>myDefault</servlet-name><url-pattern>/templates/*</url-pattern></servlet-mapping>
0 0
- 文件上传和文件获取及ckplay地址
- 文件上传和文件下载
- servlet文件上传2——复合表单提交(数据获取和文件上传)
- python ftp 文件上传和文件下载
- SpringMVC文件上传和文件过大处理
- Struts2中的文件上传和文件下载
- NSURLSession实现文件下载和文件上传
- struts2的文件上传和文件下载
- struts2文件下载和文件上传
- #.java上传文件和文件信息
- springmvc文件上传和文件下载
- HTML5 多文件上传和文件操作
- 文件上传和文件压缩下载
- MVC和文件上传
- php 遍历文件夹及文件,获取文件名和文件路径存入数据库中
- php 遍历文件夹及文件,获取文件名和文件路径存入数据库中
- Java配置实现Jackson对象获取和文件上传
- 简单的Ext文件上传,文件下载和文件删除
- Unity中关于作用力方式ForceMode的功能注解
- 视频压缩编码和音频压缩编码的基本原理
- 《数据结构》第一章 绪论 知识总结导图 信管1134-13
- 浅析静态库链接原理
- 关于C++模板的链接错误问题
- 文件上传和文件获取及ckplay地址
- 自定义控件(一)【Android】
- 花生壳路由器设置
- wifi那点事-WPS
- 碎片页介绍(一)
- 超威电池充电
- 加密算法
- Servlet 运行原理
- Eclipse 3.7.2 Indigo 官网下载地址