基于JSP+Servlet+JavaBean的图片或文件上传

基于JSP+Servlet+JavaBean的图片或文件上传

一、概述

现在不管是博客论坛还是企业办公,都离不开资源的共享。通过文件上传的方式,与大家同分享,从而达到大众间广泛的沟通和交流,我们既可以从中获得更多的知识和经验,也能通过他人的反馈达到自我改进和提升的目的。

下面我就为大家介绍 web项目中的这一上传功能,那么文件是如何从本地发送到服务器的呢?大家可以在在线视频课程进修学习《基于JSP+Servlet+JavaBean的人力资源管理系统开发》中第22课-项目开发-其它功能完善-图片上传,同时共享资料并提供相关答疑

课程观看地址:http://www.xuetuwuyou.com/course/53

讲师:蒋子厚http://www.xuetuwuyou.com/user/1984

课程出自学途无忧网:http://www.xuetuwuyou.com

二、Servlet实现文件上传,需要添加第三方提供的jar

1) commons-fileupload-1.2.2-bin.zip

2) commons-io-2.3-bin.zip

首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。

三:文件上传的JSP文件要求和例子

表单提交方式必须是POST方式,

编码类型:enctype="multipart/form-data",

默认是 application/x-www-form-urlencoded

比如:<formaction="FileUpLoad"enctype="multipart/form-data"method="post">

然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理详细代码如下:一个form将文件信息通过post方式传送到指定的servlet

JSP代码如下:

<%@ page language="java" import="java.util.*"pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">

<html>

<body>

<%

String id = request.getParameter("id");

String username = request.getParameter("username");

%>

<table width="100%" border="0"cellpadding="0" cellspacing="0">

<tr>

<td width="17"valign="top" background="images/mail_leftbg.gif"><imgsrc="images/left-top-right.gif" width="17"height="29" /></td>

<td valign="top"background="images/content-bg.gif"><tablewidth="100%" height="31" border="0"cellpadding="0" cellspacing="0"class="left_topbg" id="table2">

<tr>

<td height="31"><divclass="titlebt">员工相片上传</div></td>

</tr>

</table></td>

<td width="16"valign="top" background="images/mail_rightbg.gif"><imgsrc="images/nav-right-bg.gif" width="16"height="29" /></td>

</tr>

<tr>

<td valign="middle"background="images/mail_leftbg.gif">&nbsp;</td>

<td valign="top"bgcolor="#eef2f6">

<form action="FileUpLoad" method="post"enctype="multipart/form-data" name="form1">

<table width="100%"border="1" cellpadding="0" cellspacing="0"bordercolor="#a7c5ca">

<tr bgcolor="#c0dde3">

<th scope="col"width="25%">&nbsp;</th>

<th scope="col"width="15%">&nbsp;</th>

<th scope="col"width="35%">&nbsp;</th>

<th scope="col"width="25%">&nbsp;</th>

</tr>

<tr>

<td>&nbsp;</td>

<td>员工ID&nbsp;:</td>

<td><label>

<inputtype="text" name="id" value="<%=id %>">

</label></td>

<td>&nbsp;</td>

</tr>

<tr>

<td>&nbsp;</td>

<td>员工姓名:</td>

<td><label>

<inputtype="text" name="username" value="<%=username%>">

</label></td>

<td>&nbsp;</td>

</tr>

<tr>

<td>&nbsp;</td>

<td>员工相片:</td>

<td><label>

<inputtype="file" name="file1">

</label></td>

<td>&nbsp;</td>

</tr>

<tr>

<td>&nbsp;</td>

<td>&nbsp;</td>

<td>

<label>

<inputtype="submit" name="Submit" value="提交">

</label>

</td>

<td>&nbsp;</td>

</tr>

</table>

</form>

</td>

<tdbackground="images/mail_rightbg.gif">&nbsp;</td>

</tr>

<tr>

<td valign="bottom"background="images/mail_leftbg.gif"><imgsrc="images/buttom_left2.gif" width="17"height="17" /></td>

<tdbackground="images/buttom_bgs.gif"><imgsrc="images/buttom_bgs.gif" width="17"height="17"></td>

<td valign="bottom"background="images/mail_rightbg.gif"><imgsrc="images/buttom_right2.gif" width="16"height="17" /></td>

</tr>

</table>

</body>

</html>

可以看到,我们将数据提交到工程下的FileUpLoad这个Servlet。 之后,我们就来编写这个Servlet:FileUpLoad.java

FileUpLoad.java代码如下:

package com.xtwy.hr.servlet;

import java.io.*;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.fileupload.FileItem;

importorg.apache.commons.fileupload.FileUploadException;

importorg.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.xtwy.hr.dao.UsersDao;

public class FileUpLoad extendsHttpServlet {

publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

request.setCharacterEncoding("utf-8");// 设置编码

Stringphotoname = null;

Stringid = null;

//获得磁盘文件条目工厂

DiskFileItemFactoryfactory = new DiskFileItemFactory();

//获取文件需要上传到的路径

Stringpath = request.getRealPath("/upload");

//如果没以下两行设置的话,上传大的文件会占用很多内存,

//设置暂时存放的存储室 , 这个存储室,可以和最终存储文件的目录不同

factory.setRepository(newFile(path));

//设置缓存的大小,当上传文件的容量超过该缓存时,直接放到暂时存储室

factory.setSizeThreshold(1024* 1024);

//高水平的API文件上传处理

ServletFileUploadupload = new ServletFileUpload(factory);

try{

//可以上传多个文件

List<FileItem>list = (List<FileItem>) upload.parseRequest(request);

for(FileItem item : list) {

Stringname = item.getFieldName(); // 获取表单的属性名字

if("id".equals(name)) {

id= item.getString();

}

//如果获取的表单信息是普通的文本信息

if(item.isFormField()) {

//获取用户具体输入的字符串,名字起得挺好,因为表单提交过来的是字符串类型的

Stringvalue = item.getString();

request.setAttribute(name,value);

}

//对传入的非简单的字符串进行处理,比如说二进制的图片,电影这些

else{

/**

* 以下三步,主要获取上传文件的名字

*/

//获取路径名

Stringvalue = item.getName();

//索引到最后一个反斜杠

intstart = value.lastIndexOf("\\");

//截取上传文件的字符串名字,加1是去掉反斜杠,

Stringfilename = value.substring(start + 1);

if("file1".equals(name)) {

photoname= filename;

}

request.setAttribute(name,filename);

OutputStreamout = new FileOutputStream(new File(path,

filename));

InputStreamin = item.getInputStream();

intlength = 0;

byte[]buf = new byte[1024];

System.out.println("获取上传文件的总共的容量:" + item.getSize());

//in.read(buf) 每次读到的数据存放在 buf 数组中

while((length = in.read(buf)) != -1) {

//在 buf 数组中取出数据写到(输出流)磁盘上

out.write(buf,0, length);

}

in.close();

out.close();

}

}

}catch (FileUploadException e) {

e.printStackTrace();

}catch (Exception e) {

}

UsersDaouserdao = new UsersDao();

userdao.updatePhotoById(Integer.parseInt(id),photoname);

Listlist1 = null;

list1= userdao.selectuserById(Integer.parseInt(id));

request.setAttribute("userlist",list1);

request.getRequestDispatcher("userview.jsp").forward(request,response);

}

}

因为已对代码做了详细的注释,所以相信大家也能基本上传的这个过程。此外,也可以读取选择文件的后缀来筛选出可以上传的类型,需要更加复杂业务操作处理的,可以在Servlet进行修改和调用相关的JavaBean封装类。这些代码大家自己扩展,不再细谈。

上传结束之后,使页面转到上传成功页面userview.jsp进行查看。 当用户看到此页面时,说明你已实现文件的上传功能。

时间: 2024-10-02 08:04:47

基于JSP+Servlet+JavaBean的图片或文件上传的相关文章

基于JSP+Servlet+JavaBean的人力资源管理系统开发课程

<基于JSP+Servlet+JavaBean的人力资源管理系统开发> 课程观看地址:http://www.xuetuwuyou.com/course/53 讲师:蒋子厚(http://www.xuetuwuyou.com/user/1984) 课程出自学途无忧网:http://www.xuetuwuyou.com 课程介绍 一.课程使用到的软件及对应的版本 1.jdk 1.7 2.tomcat 7.0 3.MySQL6.0+ 4.navicat 9 + 5.Macromedia Dreamw

servlet 通过 FileItem 实现多文件上传

[本文简介] 一个servlet 多文件上传的简单例子. [依赖包] commons-fileupload-1.3.1.jar commons-io-2.2.jar [依赖包下载] commons-fileupload-1.3.1.jar:http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi commons-io-2.2.jar:http://commons.apache.org/proper/co

struts2+jsp+jquery+Jcrop实现图片裁剪并上传

<1> 使用html标签上传需要裁剪的大图. <2> 在页面呈现大图,使用Jcrop(Jquery)对大图进行裁剪,并且可以进行预览. <3> 选择好截取部分之后发送数据给Action,在服务器端使用 Java API 对大图进行裁剪. <4> 保存大图裁剪好的头像到指定目录,完成业务. 下面一步一步做: 第一步:使用html标签上传需要裁剪的大图. 这一步说白了也就是使用Struts2自带的FileUpload功能,把图片进行上传具体代码如下: html页

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty

基于HT for Web矢量实现HTML5文件上传进度条

在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件上传进度条,矢量在<矢量Chart图表嵌入HTML5网络拓扑图的应用>一文中已经讲述了关于setCompType()方法的应用,今天我们用setImage()方法充分利用系统中定义好的矢量资源来实现文件上传进度条,我们先来看下效果图: 从效果图可以看到,向服务器上传了一个mp4文件,并在最下方显示

基于jquery.uploadify的asp.net大文件上传

以前项目的上传都是十几兆的文件,虽然没有进度条,但客户端响应比较快,客户还能接受.在新项目中,客户提供的Excel,要求导入到系统中,但Excel偶尔会将近百兆,客户对上传的使用体验提出了要求.后来在园子里找了朋友写的博客,加上自己的整理,最终实现了基于asp.net的带进度条的百兆文件上传. 在这里首先感谢两位园友,在这里附上参考的两位园友的博客. 马维拉的真实之眼:http://www.cnblogs.com/telephoner/p/3185081.html oec2003:http://

AFNetworking之多图片-文件上传

在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句话送给大家:“做一个细心的男人(女人)”.好了,闲话少说,进入正题. AFNetworking是我们在日常开发中,常用于发送网络请求的第三方类库.其中,我们经常用到的方法有两类,一是普通的网络请求,其常用方法为: //GET请求 - (AFHTTPRequestOperation *)GET:(NS

图片或文件上传阿里云服务

//图片上传到阿里云 [AcceptVerbs(HttpVerbs.Post)] public JsonResult Upload(HttpPostedFileBase fileData, string tupianming) { if (fileData != null) { try { // 文件上传后的保存路径 var extName = Path.GetExtension(fileData.FileName); if (string.IsNullOrWhiteSpace(extName)

uploadify多图片和文件上传网站应用

先要下载压缩包 www.uploadify.com/wp-content/uploads/files/uploadify.zip 1,模板文件引用 <!--引用jquery uploady*}--><script src="http://www.hq08.cn/public/jquery.js" type="text/javascript" charset="utf-8"></script><link r