您的位置:首页 > Web前端 > JavaScript

Jsp/servlet上传文件、图片(老版方法)

2016-05-24 13:10 363 查看
额呵呵呵....

这个是servlet 3.0之前的上传方法..............................................

一、Jsp部分

<div id="formwrapper">

<h3>添加餐品</h3>

<form action="FoodServlet?method=add" method="post" enctype="multipart/form-data">

<fieldset>

<legend>餐品信息</legend>

<div>

<label for="name">餐品名称</label>

<input type="text" name="foodName" id="foodName" value="" size="150" maxlength="200" />

<br />

</div>

<div>

<label for="descp">餐品金额</label>

<input type="text" name="foodPrice" id="foodPrice" value="" size="150" maxlength="200" />

<br />

</div>

<div>

<label for="descp">餐品描述</label>

<input type="text" name="foodDesc" id="foodDesc" value="" size="150" maxlength="200" />

<br />

</div>

<div>

<label for="descp">上传图片</label>

<input type="file" name="photo" id="photo" size="150" maxlength="200" />

<br />

</div>

<div class="enter">

<input name="submit" type="submit" class="buttom" value="提交" />

<input name="reset" type="reset" class="buttom" value="重置" />

-----------------------------------------------------------------------------------------------------------------美丽分割线

注意: form元素的 enctype属性改为 "multipart/form-data" ,用二进制流传送数据到后台,包括文件的文件域。

二、servlet接收并解析参数

public void add(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String foodName = null;

int foodPrice = 0;

String foodDesc = null;

String foodImgSrc = null;

//设置保存上传文件保存路径

String savePath = getServletContext().getRealPath("/backend/images/foodImages");

//判断路径是否存在,若不存在则创建路径

File saveDir = new File(savePath);

if(!saveDir.exists()){

saveDir.mkdir();

}

//两个上传处理的核心对象

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload sfu = new ServletFileUpload(factory);

try {

List items = sfu.parseRequest(request);

Iterator it = items.iterator();

while(it.hasNext()){

//FileItem 是个API已有接口

FileItem item = (FileItem) it.next();

//判断是否为普通的控件,若是则执行 if 里的内容

if(item.isFormField()){

if(item.getFieldName().equals("foodName")){
//判断控件名是否相等,对应元素的name

String value = item.getString();

//因为是二进制传入的参数,所以在这里还要编码重组

value = new String(value.getBytes("ISO-8859-1"),"utf-8");

foodName = value;

}

else if(item.getFieldName().equals("foodPrice")){

String value = item.getString();

System.out.println("转换前金额为:----"+value);

int a = Integer.valueOf(value);

System.out.println("转换后金额为:----"+a);

foodPrice = a;

}

else if(item.getFieldName().equals("foodDesc")){

String value = item.getString();

value = new String(value.getBytes("ISO-8859-1"),"utf-8");

foodDesc = value;

}

}

else{

//获取文件大小

Long size = item.getSize();

//获取文件名(包含了文件的类型后缀)

foodImgSrc = item.getName();

System.out.println("文件名: "+foodImgSrc);

if(foodImgSrc.endsWith(".exe")){

request.setAttribute("msg", "类型不符合要求");

}

else{

//在指定路径写出文件

File file = new File(savePath,foodImgSrc);

item.write(file);

}

}

}

} catch (FileSizeLimitExceededException e){

request.setAttribute("msg", "文件太大");

} catch (FileUploadException e) {

e.printStackTrace();

} catch (Exception e){

e.printStackTrace();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: