JSP+Servlet使用commons.fileupload和commons.io完成图片上传
来源:互联网 发布:网络女主播排名 编辑:程序博客网 时间:2024/06/05 08:00
在jsp+servlet的项目中需要使用图片上传的功能,如果不把图片放在服务器上的话,每次都要从本机取出来,不能达到想要的效果,使用commons.fileupload和commons.io可以完成这个功能,
使用<input type="file">
这个控件来选择要上传的图片,如图:
然后来说下怎么将选中的图片上传到服务器中,这里先要将commons.fileupload和commons.io的jar包添加到lib下,
注意:使用时要在form处添加属性enctype=”multipart/form-data”,否则会报一个异常出来.
之后在servlet中写添加图片的具体方法:
public void doProAddWithFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); // DiskFileItemFactory FileItem 对象的工厂,可以设定缓冲区大小和存放临时文件目录 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存缓冲区的大小为11k factory.setSizeThreshold(11 * 1024); // 指定保存上传文件的临时文件夹,自己定义 File f = new File("F://tempDirectory"); // setRepository方法用于设置当上传文件尺寸大于setSizeThreshold方法设置的临界值时,将文件以临时文件形式保存在磁盘上的存放目录。 factory.setRepository(f); // 创建ServletFileUpload的实例 ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setHeaderEncoding("UTF-8"); // 设置单个上传文件的最大值为6M,该数据以字节为单位 sfu.setFileSizeMax(6000 * 1024); try { // 得到所有的输入项(每个控件)的集合 List<FileItem> items = sfu.parseRequest(request); // 创建一个product对象 Product pro = new Product(); for (FileItem fileItem : items) { // isFormField()为true表示当前控件是普通控件,为false表示它是上传控件 if (fileItem.isFormField()) { // 获取控件的名称,即每个请求参数的名称 String name = fileItem.getFieldName(); // 获取控件的值,加UTF-8防止中文乱码 String value = fileItem.getString("UTF-8"); // 对控件名即请求参数进行判断,依次封装到一个Product对象的属性中 if (name.equals("serialNumber")) { pro.setPro_id(Integer.parseInt(value)); } else if (name.equals("name")) { pro.setPro_name(value); } else if (name.equals("brand")) { pro.setPro_brand(value); } else if (name.equals("model")) { pro.setPro_version(value); } else if (name.equals("price")) { pro.setPro_price(Long.parseLong(value)); } else if (name.equals("description")) { pro.setPro_introduce(value); } } else { // 分析上传文件的数据 // 获取上传文件的名称 String fileName = fileItem.getName(); // 获取上传文件的文件类型 String contentType = fileItem.getContentType(); // 获取上传文件的大小 long size = fileItem.getSize(); // 获取当前web应用根目录的绝对路径(Tomcat服务器部署工程的绝对路径) String path = this.getServletContext().getRealPath("/"); // 获取保存上传文件的全路径 String filePath = path + "images/" + fileName; // 获取封装了上传文件数据的输入流 InputStream is = fileItem.getInputStream(); // 输出流 OutputStream os = new FileOutputStream(filePath); // 输出文件 int len = 0; byte[] b = new byte[1024]; while ((len = is.read(b)) != -1) { os.write(b, 0, len); } // 关闭流 os.close(); is.close(); // 上传成功后,删除临时文件 fileItem.delete(); // 设置图片保存的相对路径,这是要存到数据库中的 pro.setPro_image("images/" + fileName); } }
要先在服务器所在的路径下新建一个images文件夹,否则会出现找不到文件的异常,
这样就把选择的图片上传到web应用所在的服务器的文件夹下了,在数据库中只需要存它的相对路径就可以了.
2 0
- JSP+Servlet使用commons.fileupload和commons.io完成图片上传
- 使用jsp+servlet+commons-fileupload上传图片的时候出现无法获取图片项
- servlet中使用commons-fileupload实现图片上传
- jsp图片上传(commons-fileupload组件)
- Servlet使用commons-fileupload实现文件上传
- 使用commons-fileupload与commons-io进行文件上传
- JSP使用commons-fileupload实现文件上传
- Jsp 使用commons-fileupload实现文件上传
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- java文件上传(使用commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar)
- jsp+servlet+commons-fileupload-1.3.jar+commons-io-2.4.jar+jstl标签库实现文件上传与下载
- commons fileupload上传组件(完成图片上传)
- 在jsp中使用commons-fileupload将图片上传至mysql数据库,再用servlet将其显示
- Servlet上传文件,commons-fileupload
- JSP+Servlet +commons-fileupload-1.2.1实现文件上传
- commons-fileupload 图片上传示例
- QT中的show()与exec()区别
- C++面试中string类的一种正确写法
- osgOcean+VS2010+Win7编译方法
- hdu 3466 Proud Merchants(01背包)(微变化,要理解)
- 浅谈互联网+教育的背景下的校园信息化趋势
- JSP+Servlet使用commons.fileupload和commons.io完成图片上传
- Palindrome Linked List 判断一个链表是不是回文串
- java并发控制:ReentrantLock Condition使用详解
- For循环,这里的listMap必须在for循环之前new一下(循环外面new ArrayList对象),不然每次循环加入到list中,下次循环就把上次的数据清空了,最后存到list中是最后一条数据。
- 黑马程序员__Java中API之StringBuffered
- effective C++ 目录(第三版)
- STL 的string类怎么啦?
- 使用子查询创建表
- java项目部署Linux流程记录