JavaWeb上传图片

本文介绍了一个使用Java Servlet实现的简单文件上传示例。通过该示例,用户可以选择文件并将其上传到服务器上的指定目录。文章展示了完整的HTML表单及Servlet代码,并详细解释了如何处理上传过程中的各种操作。
<span style="font-size:18px;"><%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>附件上传</title>
</head>
<body>
<form action="UploadAction" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="上传">

</form>
</body>
</html></span>
<span style="font-size:18px;">package servlet2;

import java.io.IOException;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/UploadAction")

//需要将文件上传到的目录!
@MultipartConfig(location="F:/明星照/")

public class UploadAction extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public UploadAction(){
		super();
	}
	protected void doGet(HttpServletRequest request,HttpServletResponse response){
		response.getHeader("Content-Disposition");
		
	}
	
	
	protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
		//得到所上传的文件!
		Part p = request.getPart("filename");
		
		//得到表头信息。
		//Content-Disposition: form-data; name="filename"; filename="1.jpg"

		String header = p.getHeader("Content-Disposition");
		// form-data; name="filename"; filename="1.jpg"
//		System.out.println(header);
		
		//获取.jpg
		String sb = header.substring(header.lastIndexOf(".")).replace("\"","");
//		System.out.println(sb);
		
		String name = UUID.randomUUID().toString()+ sb;
		//将文件上传到指定目录下!
//		System.out.println(name);
		p.write(name);
		
		//解决乱码问题!最重要的是,要将文件上传到客户端网页中,须先将图片保存至本地中!利用p.write;
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write(String.format("<img src='%s'>", "/a/"+name));
		
		//<img src='/a/6efc617e-44b0-4c9a-8a01-593ec9205892.jpg'>
	}
	
	
	
	
	
	
	
	
	
	
	
	

}
</span>


JavaWeb实现图片上传并显示可按以下步骤进行: ### 图片上传 - **创建存储文件夹**:在tomcat的webapps目录下建pic目录,用于存放图片。不能使用`request.getServletContext().getRealPath(“logos”)`这种会在tomcat的reDeploy时自动清除上传文件的路径,要建立与应用名同级的webapps目录下的文件夹,可通过特定代码获得pic文件夹路径[^1]。 - **解析表单数据**:解析表单传递过来的数据,使用`upload.parseRequest(request)`返回`List`集合数据(类型为`FileItem`)。若测试时`request`正常提交表单,但`parseRequest(request)`为空、`list.size()`为0,问题可能出在web.xml文件上,和filter有关,需检查配置struts那里的`<filter-mapping>`标签设置,如`<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>` [^2]。 ### 图片存储 - **存储到数据库**:以更新用户信息为例,在`daoImpl`中可通过以下代码将图片路径存储到数据库。 ```java @Override public boolean UpdateUserInfo(UserInfo userinfo, User user) { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "update userinfo set username=?,phone=?,name=?,sex=?,place=?,hometown=?,headimgpath=? where usernum =(select userid from t_user where email=?)"; Object[] objects = { userinfo.getUsername(), userinfo.getPhone(), userinfo.getName(), userinfo.getSex(), userinfo.getPlace(), userinfo.getHometown(), userinfo.getHeadimgpath(), user.getEmail() }; try { int count = runner.update(sql, objects); if (count > 0) { return true; } else { return false; } } catch (SQLException e) { e.printStackTrace(); return false; } } ``` 以商品信息插入为例,在`GoodsDaoImpl`中可通过以下代码将图片路径存储到数据库。 ```java public void goodsadd(Goods goods) throws Exception { QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "INSERT INTO `s_goods` VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; qr.update(sql, goods.getId(), goods.getFirstclassification().getId(), goods.getTwoclassification().getId(), goods.getGoodsname(), null, goods.getGoodsimg(), goods.getGoodsinfo(), goods.getState(), goods.getCreateuser(), goods.getCreatetime(), goods.getUpdatetime(), null, null, null); } ``` ### 图片显示 在前端页面显示图片,以显示头像为例,可使用以下代码: ```html <span class="item_name" style="width:120px;">头 像</span> <img src="upload/${requestScope.userInfo.headimgpath}" width="60" height="60" name="headimg"> ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值