JSP文件上传(精简干货)

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">&nbsp;->仅支持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;
	}
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值