上传文件

来源:互联网 发布:王朔小说 知乎 编辑:程序博客网 时间:2024/06/04 08:23

上传文件首先导入两个需要的jar包

commons-fileupload-1.3.1.jar
commons-io-2.5.jar


jsp页面代码,form表单和信息的回写,信息的回写使用的是jQuery,记得导入需要的文件

<div id="section">

    <form name="f1" id="f1" action="ToSetUserServlet" method="post" enctype="multipart/form-data">
<table align="center">
<caption>
<h3>修改个人信息</h3>
</caption>
<tr>
<td>账号</td>
<td><span id="userid" ></span>
<!-- 隐藏域 -->
<input type="hidden" name="uid" id="uid">
</td>
</tr>
<tr>
<td>昵称</td>
<td><input type="text" name="username" id="username"></td>
</tr>


<tr>
<td>头像</td>
<td><input type="file" name="userpicture" id="userpicture"></td>
</tr>



<tr>
<td>性别</td>
<td><select name="usersex" id="usersex">
<!--  <option value="">请选择</option>-->
<option value="">请选择</option>
<option value="0">男</option>
<option value="1">女</option>
</select></td>
</tr>

<tr>
<td>邮箱</td>
<td><input type="text" name="useremail" id="useremail"></td>
</tr>

<tr>
<td>密码</td>
<td><input type="password" name="userpwd" id="userpwd"></td>
</tr>


<tr>
<td>家庭住址</td>
<td>
<span id="province" ></span>
<span id="city" ></span>
<span id="county" ></span>
</td>
</tr>
<tr>
<td></td>
<td>
<select id="s_province" name="s_province">
<option ></option>
</select>  
   <select id="s_city" name="s_city" ></select>  
   <select id="s_county" name="s_county"></select>

</td>
</tr>

<tr align="center">
<td colspan="2"><input type="submit" value="确定"></td>
</tr>
</table>
</form>

        <!--用户信息回填  进行修改-->
   <c:if test="${sessionScope.user!=null }" var="cc" scope="session">
    <!-- jQuery和EL表达式-->
    <script type="text/javascript">
   
    $("#userid").html("${sessionScope.user.account }");
    $("#uid").val("${sessionScope.user.uid }");
    $("#username").val("${sessionScope.user.name }");
    $("#usersex").val("${sessionScope.user.sex }");
    $("#useremail").val("${sessionScope.user.email }");
    $("#userpwd").val("${sessionScope.user.password }");
    $("#province").html("${sessionScope.user.province }");
    $("#city").html("${sessionScope.user.city }");
    $("#county").html("${sessionScope.user.county }");
    $("#userpicture").val("${sessionScope.user.picture }");
   
    </script>
</c:if>
       
    </div>


Servlet中post方法的代码

User user=(User)request.getSession().getAttribute("user");

// 这是Tomcat下发布的web项目的真实路径,不是开发路径
String savePath = this.getServletContext().getRealPath("/upload");


// 创建FileItem(实际就是表单项)的工厂类
DiskFileItemFactory factory = new DiskFileItemFactory();
// 依据工厂类创建ServletFileUpload对象,这是核心类。
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置表单头编码,只对post提交有效
upload.setHeaderEncoding("UTF-8");

// 定义一个MAP集合
Map<String, String> map = new HashMap<String, String>();

try {
// 获取请求中所有的表单元素
List<FileItem> list = upload.parseRequest(request);
// 遍历元素
for (FileItem item : list) {
// 表单中非file类型元素
if (item.isFormField()) {
// 普通表单元素的name值
String field = item.getFieldName();// 表单域名;
// 普通表单元素的value值
String value = item.getString("UTF-8");
map.put(field, value);
} else {
// 表单中File类型的元素
// 获取file类型表单元素的名称
String filename = item.getName();
// 保证filename是文件名称,不带路径
filename = filename
.substring(filename.lastIndexOf("\\") + 1);
// 获得File类型的表单元素中文件内容
InputStream in = item.getInputStream();
//判断输入流是否有数据输入
if(in.available()!=0){
// 创建一个指定路径的文件输出流
FileOutputStream out = new FileOutputStream(savePath + "\\"
+user.getAccount()+ filename);
// 文件流的缓冲区
byte buffer[] = new byte[1024];
// 标示位,标示字节读取的数量,-1表示读完了
int len = 0;
// 读取文件,并把读取的长度给len
while ((len = in.read(buffer)) > 0) {
// 使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath +
// "\\"+filename)当中
out.write(buffer, 0, len);
}
// 刷新流
out.flush();
//关闭流
out.close();
in.close();
map.put("userpicture", "upload/" +user.getAccount()+ filename);
}else{
map.put("userpicture", null);
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
User user_1=new User(map.get("uid"),user.getAccount(),map.get("username"),map.get("userpicture"),
("".equals(map.get("usersex")))?null:map.get("usersex"),map.get("useremail"),map.get("userpwd"),
map.get("s_province"),map.get("s_city"),map.get("s_county"));
System.out.println(user_1);
if(userService.updataUser(user_1)){
request.setAttribute("message", "设置成功");
request.getSession().setAttribute("user", user_1);
request.getRequestDispatcher("IndexServlet").forward(request, response);
}else{
request.setAttribute("message", "设置失败");
request.getRequestDispatcher("SetUserServlet").forward(request, response);
}

0 0