1.前端代码
<form action="AddVedio" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>*上传视频:</td>
<td><input type="file" name="vname"></td>
</tr>
<tr>
<td>*视频封面:</td>
<td><input type="file" name="vpic"> ->仅支持jpg,png格式图片</td>
</tr>
<tr>
<td>*视频标题:</td>
<td><input type="text" name="vrealtitle" class="input-text" placeholder="标题..."></td>
</tr>
<tr>
<td>*视频简介:</td>
<td><textarea name="vinfo" cols="28" rows="4" class="input-text" placeholder="简介..."></textarea></td>
</tr>
<tr>
<td>*视频类型:</td>
<td>
<select name="vclass">
<option selected="selected">电影片段</option>
<option>MV</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" id="fileupload">
<input type="submit" value="上传" class="input-btn">
</td>
</tr>
<tr>
<td colspan="2" id="fileupload">
<input type="reset" value="重置" class="input-btn">
</td>
</tr>
</table>
</form>
*注意:enctype="multipart/form-data",若无这段代码后端将无法读取视频,图片,音频等文件。
2.后端Java代码
- 需要导入:commons-fileupload-1.3.3.jar和commons-io-2.6.jar
@WebServlet("/AddVedio")
public class AddVedioServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//保存文件
//1.得到fileitem集合
DiskFileItemFactory factory =new DiskFileItemFactory();
factory.setSizeThreshold(1024*5);
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setSizeMax(1024*1024*1024*2);
List<FileItem> items=null;
Vedio v=new Vedio();
try {
items=upload.parseRequest(req);
//2.便利items
for (FileItem item : items) {
//3.获取表单上的输入信息
if(item.isFormField()) {
String formname=item.getFieldName();
if(formname.equals("vinfo")) {
if(item.getString("utf-8")==null) req.getRequestDispatcher("errorpage_500.jsp").forward(req, resp);
v.setVinfo(item.getString("utf-8"));
}
if(formname.equals("vclass")) {
if(item.getString("utf-8")==null) req.getRequestDispatcher("errorpage_500.jsp").forward(req, resp);
v.setVclass(item.getString("utf-8"));
}
if(formname.equals("vrealtitle")) {
if(item.getString("utf-8")==null) req.getRequestDispatcher("errorpage_500.jsp").forward(req, resp);
v.setVrealtitle(item.getString("utf-8"));
}
}else {
//视频或图片文件
String fieldName=item.getFieldName();
String fileName=item.getName();
// String contentType=item.getContentType();
// long sizeInByte=item.getSize();
String basePath=req.getServletContext().getRealPath("/");
//根据后缀判断图片与视频
String atsuffix=fileName.substring(fileName.lastIndexOf("."), fileName.length());
String suffix=atsuffix.substring(1,atsuffix.length());
//图片
if(suffix.equalsIgnoreCase("jpg")||suffix.equalsIgnoreCase("png")) {
InputStream in=item.getInputStream();
byte[] buffer=new byte[1024*1024*20];
int len=0;
String s= String.valueOf(System.currentTimeMillis());
String t="eatvedioEatVEdIOEATveDIOeATvEdio";
String e=t.substring((int)(Math.random()*32), t.length());
String vediostring=e+s;//重命名存储,vname
v.setVpicname(vediostring+"."+suffix);
fileName=basePath+"vedios"+File.separator+"image"+File.separator+vediostring+"."+suffix;
OutputStream out=new FileOutputStream(fileName);
while((len=in.read(buffer))!=-1) {
out.write(buffer, 0, len);
}
out.close();
in.close();
v.setVpic(fileName);
}else if(suffix.equalsIgnoreCase("mp4")||suffix.equalsIgnoreCase("avi")) {//视频文件
InputStream in=item.getInputStream();
byte[] buffer=new byte[1024*1024*700];
int len=0;
//重命名
String s= String.valueOf(System.currentTimeMillis());
String t="EatVEdIOeAtVedioEaTvediOeATvEdio";
String e=t.substring((int)(Math.random()*32), t.length());
String vediostring=e+s;
v.setVname(vediostring+"."+suffix);
fileName=basePath+"vedios"+File.separator+"vediotemp"+File.separator+vediostring+"."+suffix;
OutputStream out=new FileOutputStream(fileName);
while((len=in.read(buffer))!=-1) {
out.write(buffer, 0, len);
}
out.close();
in.close();
v.setVfile(fileName);
}else {
req.getRequestDispatcher("errorpage_500.jsp").forward(req, resp);
}
}
}
v.setVlastdate(getDate());
v.setVplaytimes(0);
VediodaoImpl vdimp=new VediodaoImpl();
//4.将对象添加到数据库
vdimp.addVedio(v);
} catch (FileUploadException e) {
e.printStackTrace();
}
req.getRequestDispatcher("addsuccess.jsp?operate=addinfo").forward(req, resp);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected Date getDate() {
Date time= new java.sql.Date(new java.util.Date().getTime());
return time;
}
}