用jsp实现简单的图片上传功能(multipart/form-data形式的表单)

2008-10-11 22:07

用jsp实现简单的图片上传功能

1 先做一个页面,选择上传的图片
<body>
   <form action="uploadServlet" enctype="multipart/form-data" method="POST" >
     
      selectimage: <input type="file" name="myfile"/><br>
      <input type="submit" value="upload"/>
   </form>
</body>
注意要以enctype="multipart/form-data" 编码形式来提交
2 在转到的servlet读取到传过来的内容,并截取出图片的信息,建一个文件,然后把信息保存进去,实现了图片的上传。
package com.zhou.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UploadServlet extends HttpServlet {

public UploadServlet() {
   super();
}

public void destroy() {
   super.destroy(); // Just puts "destroy" string in log
   // Put your code here
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   String contentType=request.getContentType();
   String servername=request.getServerName();
   String realpath=request.getRealPath(servername);
   System.out.println(contentType);

InputStream in=null;
   OutputStream out=null;
   if(contentType.indexOf("multipart/form-data")>=0){
    in=request.getInputStream();
    int formlength=request.getContentLength();
    byte[] formcontent=new byte[formlength];
    int totalread=0;
    int nowread=0;
    while(totalread<formlength){
     nowread=in.read(formcontent,totalread, formlength);
     totalread+=nowread;
    }
    String strcontent=new String(formcontent);
    System.out.println(strcontent);
    int typestart=strcontent.indexOf("Content-Type:")+14;
    int typeend=strcontent.indexOf("\n", typestart)-1;
    String formType=strcontent.substring(typestart, typeend);
    if(formType.equals("image/jpeg")||formType.equals("image/gif")||formType.equals("image/pjepg")){
     int filenamestart=strcontent.indexOf("filename=\"")+10;
     int filenameend=strcontent.indexOf("\n",filenamestart)-2;
     String filename=strcontent.substring(filenamestart, filenameend);
     filename=filename.substring(filename.lastIndexOf("."));
     String newfilename=""+(new Date()).getDate()+(new Date()).getHours()+(new Date()).getMinutes()+(new Date()).getSeconds();
     newfilename=newfilename+filename;
     realpath=realpath+"";
     newfilename=realpath+newfilename;
     int filestart=strcontent.indexOf("\n",typestart)+1;
     filestart=strcontent.indexOf("\n",filestart)+1;
     int intboundary=contentType.indexOf("boundary=")+10;
     String strboundary=contentType.substring(intboundary);
     int fileend=strcontent.indexOf(strboundary,filestart)-4;
     String saveFile=strcontent.substring(filestart,fileend);
     int contentstart=strcontent.substring(0,filestart).getBytes().length;
     int contentend=strcontent.substring(0, fileend).getBytes().length;
     System.out.println(saveFile);
     File myfile=new File(realpath);
     if(!myfile.exists()){
      myfile.mkdirs();
     }
     out=new FileOutputStream(newfilename);
     out.write(formcontent, contentstart, contentend-contentstart);
     response.sendRedirect("show.jsp");
    }else{
     response.sendRedirect("error.jsp");
    }
   }
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   doGet(request,response);
}

public void init() throws ServletException {
   // Put your code here
}

}
3 配置好xml里的servlet,当然可以在建servlet配置。

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>uploadServlet</servlet-name>
    <servlet-class>com.zhou.action.UploadServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>uploadServlet</servlet-name>
    <url-pattern>/uploadServlet</url-pattern>
</servlet-mapping>

4 部署运行程序,可以在你的部署目录下的localhost下upload里面看到你上传的图片了。

表单中enctype=“multipart/form-data”的意思,是设置表单的MIME编码 
默认情况,这个编码格式是application/x-www-form-urlencoded,可以通过request.getParameter来获取表单中的内容 
但是文件上传需要接受的是二进制的数据需要使用multipart/form-data,才能完整的传递文件数据,进行下面的操作 
使用了此设置,就不能利用getParameter直接获取文本内容了,而是用一个字节数组来接收内容,然后再转换成String类型。

#jsp的一些内容

分享到:

浏览(3628) 评论(3)转载(3)

时间: 2024-12-19 08:58:49

用jsp实现简单的图片上传功能(multipart/form-data形式的表单)的相关文章

使用jsp/servlet简单实现文件上传与下载

使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用jsp与servlet实现文件上传与下载. 在写代码之前,我们需要导入两个额外的jar包,一个是common-io-2.2.jar,另一个是commons-fileupload-1.3.1.jar,将这个两个jar 包导入WEB-INF/lib目录里. 首先,想要在web端即网页上实现文件上传,必须要提供

drupal中安装CKEditor文本编辑器,并配置图片上传功能 之 方法二

drupal中安装CKEditor文本编辑器,并配置图片上传功能 之 方法一 中介绍了ckeditor的安装和配置方法,其实还有另一种新方法,不用IMCE模块. 不过需要ckfinder的JS库,可以到http://ckfinder.com/download下载,下载后放到ites\all\modules\contrib\ckeditor文件夹下如图, 然后到admin/config/content/ckeditor/edit/Full配置一下 就行了

FLASH图片上传功能—从百度编辑器UEditor里面提取出来

为了记录工作中碰到的各种问题,以及学习资料整理,今天开始,将以往的文章进行了一个整理,以后也开始认真的记录学习过程中的各种问题 在HTML里面的文件上传功能一直是个问题,为了实现上传文件大小限制,怎样显示进度条问题,以及上传前图片预览,也试过各种办法,直到有一天看到百度编辑器中的图片上传功能.花了点功夫把他单独提取出来. 最终效果图如下: 这个功能可以提供多个图片文件选择,预览,然后对上传的图片在上传队列中删除,以及旋转和,上传中进度条显示,以及上传相册的选择. 源代码下载路径为: http:/

megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用flash实现上传的): 经过研究找到了一个手机端比较相对比较好用的插件实现图片上传,那就是megapix-image插件,比uploadify还是好用多了,下面就来上实例吧: html页面: <html> <body> <input type="file" cap

HTML&amp;#183;图片热点,网页划区,拼接,表单

HTML·图片热点,网页划区,拼接,表单 箬桊▲ 子这两位新城总督.到凉州刺史王培芳在内的六位副监再到北凉关内将近六万地方驻军和 建却然 酒至半酣又有两拨人几乎同时登楼先到一拨真是无巧不成书正是飞掠龙驹河小渡口的 徐凤年心中冷笑这做派可比数百个牛鼻子老道一同出迎更有心机. ハ庭奈 蚍榛帷跣 └仕犸ㄓ 李当心直截了当道:"曹长卿当年去两禅寺找过贫僧连他这个赵勾最大的死敌也不太清 方才寺中见到伯柃袁疆燕这位成名已久的大人物眼神隐晦阴沉更让许慧扑毛骨悚然. 北凉结亲举族迁往北凉.青州将军洪灵枢则

淘淘商城图片上传功能的实现

前提: 参考:集群环境下图片上传的功能分析.vmware的安装,linux的安装.nginx和ftp服务在linux的安装,ftp的客户端的使用. 图片上传是图片存储到ftp服务器上面,所以这里不需要操作mapper层. 这里用了几个工具类 ftp图片上传的工具类,图片名字的一种新的生成方式,json与java类的转换工具. 这里图片上传采用的是富文本编辑器的一个图片上传插件,在jsp页面实现的. http://kindeditor.net/docs/upload.html 根据这几个jsp页面

图片上传功能&lt;转&gt;http://blog.csdn.net/u011159417/article/details/50126023

以前也实现过上传,只不过每次都是,写完之后没有总结,下次遇到时,还要重新写,重新调式,很是浪费时间,所以,今天实现一个上传图片的功能,包括简单的页面和servlet,下次再要写这个功能时,直接拿过来就可以了,没有理论,直接上代码+少量的注释.在最下面我会把项目上传,大家需要jar包,可以从项目中拿. 该项目用到的jar包如图,在下面的项目demo中有jar包: 一.upload.jsp页面代码: [html] view plain copy print? <%@ page language=&quo

UEditor之实现配置简单的图片上传示例

开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过几次眼神交流,但从没说过话,"买毛巾啊",看着阿华手里的毛巾,阿菲先开口了. 阿华回到:"是啊,这里的老板眼神太好了,我不敢偷,就只有买了." 阿菲一下就哈哈笑了,配合到:"哇,原来你是小偷." 阿华:"嘘,小声点,其实主要原因是--"阿华指着自己的脑袋接着说到:"你看,我是个有头有脸的人,所以还是要用用毛巾的

UEditor之实现配置简单的图片上传示例 (转)

http://blog.csdn.net/huangwenyi1010/article/details/51637427#comments 1.首先你可以到官网Ueditor,查看很详细的文档,包括如何安装到Eclipse,相关jar包和如何使用Ueditor,本文主要介绍如何实现单图片上传和利用自己的接口: 运行tomcat上,在google浏览器运行(Test是我的项目名称): http://localhost:8081/Test/jsp/config.json 出现一串长长的json的字符