视频文件上传

本文介绍了一个用于添加视频信息的表单及其后端处理逻辑。表单包括视频类型、标题、文件和说明等字段,并设置了相应的验证规则。后端使用Java实现,支持wmv格式视频的上传,最大100M,并将数据保存至数据库。

<%
/**
 * 功能:添加视频信息表单
 */
%>

<%@page language="java" pageEncoding="GB2312"%>
<%@page import="epw.com.bo.user"%>
<%@page import="org.apache.commons.lang.StringEscapeUtils"%>

<%
user loginuser=(user)session.getAttribute("loginuser");
if(null==loginuser) response.sendRedirect("../login.jsp");
String lanmuid=StringEscapeUtils.escapeSql(request.getParameter("lanmuid"));
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>京博</title>

<link href="../css/css.css" rel="stylesheet" type="text/css" />
<script language="javascript">
    String.prototype.Trim  =  function()
    {
  return  this.replace(/(^/s*)|(/s*$)/g,""); 
 }

 function check()
 {
  if(document.all.form1.type.value.Trim()==""){
   alert("请选择所属视频类型");
   return false;
   }

  if(document.all.form1.title.value.Trim()==""){
   alert("请填写视频标题");
   return false;
   }
   if(document.all.form1.title.value.Trim().length>100){
   alert("视频标题不能超过100个汉字。");
   return false;
   }

   if(document.all.form1.file.value.Trim()==""){
   alert("请选择视频文件");
   return false;
   }
  
   if(document.all.form1.memo.value.Trim().length>200){
   alert("视频说明不能超过200个汉字。");
   return false;
   }

  document.all.form1.action="videoDataAdd_do.jsp?lanmuid=<%=lanmuid%>";
  document.form1.submit();
 }
</script>
</head>

<body>
<h3 class="subTitle">添加视频</h3>

<ul class="button">
 <li><a href="videoDataList.jsp?lanmuid=<%=lanmuid%>">返回视频专区</a></li>
</ul>

<br/>
<center>
 <font color="red">
 限制上传视频文件在100m以内,否则上传失败!
 <br/>
 上传的视频文件为wmv格式,此文件格式在保证画质的前提下适于网络带宽的传输!
 </font>
</center>
<br/>
<form id="form1" name="form1" action="" method="post" enctype="multipart/form-data">
 <table width="90%" border="0" align="center" cellpadding="0" class="table2" cellspacing="0">
   <tr>
         <th width="15%" align="right">视频类型</th>
         <td colspan="3">
          <select name="type" id="type">
        <option value="">请选择所属视频类型</option>
        <option value="1">形象宣传</option>
        <option value="2">媒体聚焦</option>
        <option value="3">文艺专题</option>
       </select>
         </td>
     </tr>
     <tr>
         <th width="15%" align="right">视频标题</th>
         <td colspan="3"><input name="title" type="text" class="input1" id="title"/></td>
     </tr>
     <tr>
         <th align="right">视频文件</th>
         <td colspan="3">
           <input type="file" name="file" class="input1" onkeydown="return false"   oncontextmenu="return false"/>
         </td>
     </tr>
     <tr>
         <th width="15%" align="right">视频说明</th>
         <td colspan="3"><input name="memo" type="text" class="input1" id="memo"/></td>
     </tr>
  <tr>
   <td colspan="4">
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="yesno">
           <tr>
               <td height="50" align="center">
                <input type="button" name="Submit1" value="确定" onclick="check()"/>
                <input type="reset" name="Submit2" value="清空" />
               </td>
           </tr>
       </table>
   </td>
  </tr>
 </table>
</form>
</body>

</html>

///////////////////////////////////////////////////////////////////// 

<%
/**
 * 功能:执行添加视频信息
 */
%>

<%@page language="java" pageEncoding="GB2312"%>

<%@page import="java.util.Date"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.regex.Pattern"%>
<%@page import="java.util.regex.Matcher"%>
<%@page import="java.io.File"%>
<%@page import="java.io.IOException"%>
<%@page import="java.text.*"%>

<%@page import="org.apache.commons.fileupload.*"%>
<%@page import="org.apache.commons.lang.StringEscapeUtils"%>

<%@page import="epw.com.service.electronicDataService"%>

<%
//过滤传入参数字符串
String lanmuid=StringEscapeUtils.escapeSql(request.getParameter("lanmuid"));
//System.out.println(lanmuid);

//上传视频文件
String fieldName="";
String fieldType="";
String fieldTitle="";
String fieldMemo="";
String name="";
long size=0;
String fileNameReal="";
String finalName="";
String savePath="";
try
{
 DiskFileUpload fu = new DiskFileUpload();
 //设置允许用户上传文件大小,单位:字节,这里设为100m
 fu.setSizeMax(100*1024*1024);
 //设置最多只允许在内存中存储的数据,单位:字节,这里设为10m
 fu.setSizeThreshold(10*1024*1024);
 //设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
 fu.setRepositoryPath("C://WINDOWS//Temp//");
 //开始读取上传信息
 List fileItems = fu.parseRequest(request);
 //依次处理每个上传的文件
 Iterator iter = fileItems.iterator();
 //正则匹配,过滤路径取文件名
 String regExp=".+////(.+)$";
 Pattern p = Pattern.compile(regExp);
 //过滤掉的文件类型
 String[] errorType={".exe",".com",".cgi",".asp"};
 while(iter.hasNext())
 {
  FileItem item = (FileItem)iter.next();
  
  if(item.isFormField())
  {
   //获得表单域的名字
   fieldName = item.getFieldName();
   //如果表单域的名字是type
   if(fieldName.equals("type"))
    fieldType = item.getString();
   //如果表单域的名字是title
   if(fieldName.equals("title"))
    fieldTitle = new String(item.getString().getBytes("ISO-8859-1"),"GB2312");
   //如果表单域的名字是memo
   if(fieldName.equals("memo"))
    fieldMemo = new String(item.getString().getBytes("ISO-8859-1"),"GB2312");
  }
 
  if(!item.isFormField())
  {
   name = item.getName();
   size = item.getSize();
   if((name==null||name.equals("")) && size==0)
    continue;
   Matcher m = p.matcher(name);
   boolean result = m.find();
   if(result)
   {
    for(int temp=0;temp<errorType.length;temp++)
    {
     if(m.group(1).endsWith(errorType[temp]))
     {
      throw new IOException(name+": wrong type");
     }
    }
   DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
   String date = df.format(new Date());
   fileNameReal=date+m.group(1);
   finalName=date+Math.round(Math.random()*10000)+fileNameReal.substring(fileNameReal.indexOf("."));
   //保存上传的文件到指定的目录
   savePath=getServletContext().getRealPath("//upload//electronicData")+"//"+finalName;
   item.write(new File(savePath));
   //out.print(finalName+size);
   }
   else
   {
    throw new IOException("fail to upload");
   } 
  }
 }
}
catch(IOException e)
{
 out.println(e);
}
catch(FileUploadException e)
{
 out.println(e);
}
catch(Exception e)
{
 e.printStackTrace();
}

//写数据库
electronicDataService electronicDataService=new electronicDataService();
int resutl=electronicDataService.addVideoData(fieldType,fieldTitle,savePath,fieldMemo);
String message="";
if(resutl==-1)
{
 message="添加失败!";
}
else
{
 message="添加成功!";
}
String gotopage="videoDataList.jsp?lanmuid="+lanmuid;
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>京博</title>

<link href="../css/css.css" rel="stylesheet" type="text/css" />
</head>

<body>

<jsp:forward page="../message.jsp">
 <jsp:param name="gotopage" value="<%=gotopage%>" />
 <jsp:param name="message" value="<%=message%>" />
</jsp:forward>

</body>

</html>
//////////////////////////////////////////////////////////////////////////////////////////////////////

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值