【学习笔记】原生jsp图片上传

   最近写web大作业,自拟的题目是招聘网站的开发,没有用框架写,写完有空记录一下图片上传的实现(毕竟本人菜鸡之前试图写这个功能但总是没法实现),代码参考的是这位大佬的:https://www.jianshu.com/p/118335af2245

直接上代码:UploadpicsServlet.java

package zpwz;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.Database.conDB; 


/**
 * Servlet implementation class UploadpicsServlet
 */
@WebServlet("/UploadpicsServlet")
public class UploadpicsServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UploadpicsServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("utf-8");//防止表单传递的中文乱码
		response.setCharacterEncoding("GBK"); 
		// 为解析类提供配置
				DiskFileItemFactory factory = new DiskFileItemFactory();
				// 创建解析类的实例
				ServletFileUpload uplod= new ServletFileUpload(factory);
				// 设置上传单个文件的大小的最大值
				uplod.setFileSizeMax(500 * 500);
				// 每个表单域中数据会封装到一个对应的FileTem对象
				HttpSession session = request.getSession();
				PrintWriter out = response.getWriter();
				try {
					String username=session.getAttribute("username").toString();
					List<FileItem> items = uplod.parseRequest(request);
					// 区分表单域
					for (int i = 0; i < items.size(); i++) {
						FileItem item = items.get(i);
						// isFormField为true,表示不是文件上传表单域
						if (!item.isFormField()) {
							ServletContext sctx = getServletContext();
							// 获取文件的存取物理路径
							String path = sctx.getRealPath("images");
							//String path =".\\images";
							//System.out.println(path);
							// 获取文件名
							String fileName = item.getName();
							//System.out.println(fileName);
							// 该方法在某些系统会放回路径加文件名
							fileName = fileName.substring(fileName.lastIndexOf(".") + 1);
							//System.out.println(fileName.lastIndexOf("\\"));
							File file = new File(path + "\\" +username+"_pics."+ fileName);//重命名图片
							// 上传文件
							if (!file.exists()) {
								item.write(file);
							}
							//删除处理文件上传时生成的临时文件
							item.delete();
							
							/****/
							conDB conn = new conDB();
							conn.connectDB();
							String url=username+"_pics."+ fileName;
							String sql ="update employee_user set photo_url='"+url+"' where employee_id="+session.getAttribute("userid").toString();
							Statement statement=conn.getConnection().createStatement();
					    	 boolean rs =statement.execute(sql);
					    	 
					    	 if(rs!=true)
					    	  {
					    			
					    			out.println("<script>alert('上传成功');window.location.href='employee_info.jsp'</script>");
					    	  }
					    	  else
					    	  {
					    		  out.println("<script>alert('上传失败');window.location.href='employee_info.jsp'</script>");
					    	  }
						}
					}
				}catch(Exception e) {
					System.out.println(e.toString());
				}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

简单的前端代码:


	   <form action="UploadpicsServlet"  method="POST"  enctype="multipart/form-data">
	        <input type="file" name="image"/><br><br>
	        <input type="submit">  <input type="reset">
        </form>

注意:

1.前端表单enctype属性一定要设为"multipart/form-data"

2.需要导入两个包,如果没有可以从我的网盘下载

    链接: https://pan.baidu.com/s/1AUuCkjjuG3SE3-PTF1mASA 提取码: 17d5 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值