1,html页面,上传使用input type=file控件,其所在的form必须加上enctype="multipart/form-data"
<form role="form" id="form-updUser" name="form-updUser"
method="post" action="updUser" enctype="multipart/form-data">
<div class="form-group">
<label for="username">用户名</label> <input type="text"
class="form-control" id="username" name="username"
placeholder="请输入用户名">
</div>
<div class="form-group">
<label for="name">名称</label> <input type="text"
class="form-control" id="name" name="name" placeholder="请输入名称">
</div>
<div class="form-group">
<label for="palce">归属地</label> <select id="select-province"
name="select-province"></select> <select id="select-city"
name="select-city"></select> </label>
</div>
<div class="form-group">
<label for="apartment">部门</label> <input type="text"
class="form-control" id="apartment" name="apartment"
placeholder="请输入部门">
</div>
<div class="form-group">
<label for="phoneNum">联系方式</label> <input type="text"
class="form-control" id="phoneNum" name="phoneNum"
placeholder="请输入联系方式">
</div>
<input type="hidden" name="id">
<div class="form-group">
<label for="inputfile">文件输入</label> <input type="file"
name="file" id="inputfile"> </div>
<input type="hidden" name="id" id="id">
</form>
2,后台借助于两个开源包
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
引入包之后,后台处理的代码如下
private void process(HttpServletRequest request,
HttpServletResponse response) {
// 进行用户更新,以及联系文件的存储
response.setCharacterEncoding("utf-8");
response.setContentType("html;charset=utf-8");
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(request.getCharacterEncoding());
try {
List<FileItem> list = upload.parseRequest(request);
for (int i = ; i < list.size(); i++) {
FileItem item = list.get(i);
if (item.isFormField()) {
// 说明是普通的表单字段
// updUser(item);
// request.getRequestDispatcher("/listUser").forward(request, response);
} else if(!item.getName().equals("")){
// 说明是文件
saveFile(item);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} private void saveFile(FileItem item) {
String fileName=item.getName();
//防止文件重名
String imageFileName = new Date().getTime() + new Random().nextInt() +fileName.substring(fileName
.lastIndexOf(".") );
//网站的物理跟路径
String rootPath=this.getServletContext().getRealPath("/");
System.out.println("UpdUser:rootPath:"+rootPath);
String path=rootPath+"files\\";
File dir=new File(path);
if(!dir.exists()){
dir.mkdirs();
}
//将文件写入物理路径
try {
item.write(new File(path,imageFileName));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }