<!-- 表单内容 -->
<form action="${pageContext.request.contextPath }/AddFoodServlet" method="post" enctype="multipart/form-data">
<!-- 本段标题(分段标题) -->
<div class="ItemBlock_Title">
<img width="4" height="7" border="0" src="${pageContext.request.contextPath }/detail/style/images/item_point.gif"> 菜品信息
</div>
<!-- 本段表单字段 -->
<div class="ItemBlockBorder">
<div class="ItemBlock">
<div class="ItemBlock2">
<table cellpadding="0" cellspacing="0" class="mainForm">
<tr>
<td width="80px">菜系</td>
<td>
<select name="cid" style="width:80px">
<c:forEach var="db" items="${requestScope.tableList.date }">
<option value="${pageScope.db.TYPEID }" >${pageScope.db.TYPENAME }</option>
</c:forEach>
</select>
*<input type="hidden" name="id" value="" />
</td>
</tr>
<tr>
<td width="80px">菜名</td>
<td><input type="text" name="foodName" class="InputStyle" value=""/> *</td>
</tr>
<tr>
<td>价格</td>
<td><input type="text" name="price" class="InputStyle" value=""/> *</td>
</tr>
<tr>
<td>简介</td>
<td><textarea name="introduce" class="TextareaStyle"></textarea></td>
</tr>
<tr>
<td width="80px">菜品图片</td>
<td>
<input type="file" name="imageUrl"/> *
</td>
</tr>
</table>
</div>
</div>
</div>
<!-- 表单操作 -->
<div id="InputDetailBar">
<input type="submit" value="添加" class="FunctionButtonInput">
<a href="javascript:history.go(-1);" class="FunctionButton">返回</a>
</div>
</form>
上传
public class AddFoodServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddFoodServlet() {
super();
// TODO Auto-generated constructor stub
}
Mydesk my=new Mydesk();
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//写入数据乱码问题解决方案
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//菜系种类id
String foodId=null;
//菜名
String foodName=null;
//价格
String price=null;
//说明
String introduce=null;
//图片路径
String priture="E:/myImage/";
String spath="/";
//接收文件
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
//判断是否是文件上传请求
if(isMultipart){
//用于创建解析文件上传工厂类
DiskFileItemFactory factor=new DiskFileItemFactory();
//默认上传文件 暂时存放在临时目录 System.getProperty("java.io.tmpdir");
//也有可能是tomcat/temp目录
//用于从请求中解析出文件
ServletFileUpload upload= new ServletFileUpload(factor);
//解决中文乱码问题
upload.setHeaderEncoding("UTF-8");
try {
//解析出文件的个数
List<FileItem> itmes=upload.parseRequest(request);
for(FileItem fi:itmes){
//表示输入的文本框
if(fi.isFormField()){
//getName方法用于获得文件上传字段中的文件名 再转编码格式
String value=fi.getString("UTF-8");
if("cid".equals(fi.getFieldName())){
foodId=value;
}
if("foodName".equals(fi.getFieldName())){
foodName=value;
}
if("price".equals(fi.getFieldName())){
price=value;
}
if("introduce".equals(fi.getFieldName())){
introduce=value;
}
if("priture".equals(fi.getFieldName())){
priture=value;
}
}else{
//获取文件名
String fileName=fi.getName();
if(fileName==null || "".equals(fileName)){
break;
}
//获取输入流
InputStream is=fi.getInputStream();
//上传的文件路径
String destPath=priture+"/"+fileName;
System.out.println(destPath);
spath+=fileName;
//创建输出流
FileOutputStream fis=new FileOutputStream(destPath);
byte[] bt=new byte[1024];
int i;
while((i=is.read(bt))!=-1){
fis.write(bt, 0, i);
}
fis.close();
is.close();
}
}
my.AddFood(foodId,foodName,price,spath,introduce);
request.getRequestDispatcher("/ShowFoodManager").forward(request, response);
System.out.println(itmes.size());
} catch (Exception e) {
request.getRequestDispatcher("/ShowFoodManager").forward(request, response);
}
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
}
package cn.et.servlet.lesson04;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyShareDownload extends HttpServlet {
static String SAVE_DIR="E://Myfile";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//读取目录下的资源
File file=new File(SAVE_DIR);
File[] files=file.listFiles();
for(File tfile:files){
//给每个资源添加一个超链接 显示在页面上
out.println("<a href='DownloadServlet?fileName="+tfile.getName()+"'>"+tfile.getName()+"<a/><br/>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
下载
public class DownloadServlet extends HttpServlet {
static String SAVE_DIR="E:/Myfile";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//下载文件的输出流
OutputStream os=response.getOutputStream();
String fileName="aa.jpg";
if(request.getParameter("fileName")!=null){
fileName=request.getParameter("fileName");
}
//告诉浏览器下载的文件名
response.setHeader("Location", URLEncoder.encode(fileName,"UTF-8"));
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(fileName,"UTF-8"));
//将文件流写入OutputStream
FileInputStream fis=new FileInputStream(SAVE_DIR+"/"+fileName);
byte[] bt=new byte[1024];
int i=-1;
while((i=fis.read(bt))!=-1){
os.write(bt,0,i);
}
fis.close();
os.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
如果图片需要展示到页面
创建一个Service
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ImageController
*/
public class ImageController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ImageController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
String imageName=request.getParameter("imageName");
String absPath="E:/myImage/"+imageName;
BufferedImage bi=ImageIO.read(new File(absPath));
ImageIO.write(bi,"png", response.getOutputStream());
}catch(Exception e){
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
jsp页面 带上图片的相对路径跳转到上面的Service
<img width="214px" height="145px" src="${pageContext.request.contextPath}/ImageController?imageName=${pageScope.db.PICTURE }" />