ajax上传图片(servlet)

 <form name="upfile_form" action="UploadServlet" method="POST" enctype="multipart/form-data">
 <p>input file title:
   <input type="text" name="file_title" />
  </p>
  <p>select less than 200K file:
   <input type="file" name="upload_file" id="upload_file" οnchange="checkFileSize(this);" />
  </p>
  <p>
   <input type="submit" value="submit" />
  </p>
  <iframe name="check_file_frame" style="display:none;"></iframe>
</form>

------sample.html

 

------web.xml---

<servlet>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>com.test.servlet.UploadServlet</servlet-class>
</servlet>

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

------servlet-----

public class UploadServlet extends HttpServlet
{

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
{
   request.setCharacterEncoding("UTF-8");
   DiskFileItemFactory factory=new DiskFileItemFactory();
   String path=request.getRealPath("/upload");
   factory.setRepository(new File(path));
   factory.setSizeThreshold(1024*1024);
 
   ServletFileUpload upload=new ServletFileUpload(factory);
   try{
    List<FileItem> list=upload.parseRequest(request);
  
    for(FileItem item:list)
    {
     if(item.isFormField())
     {
      String name=item.getFieldName();
      String value=item.getString("UTF-8");
      request.setAttribute(name, value);
     }
     else
     {
      String name=item.getFieldName();
      String value=item.getName();
      int start=value.lastIndexOf("\\");
      String fileName=value.substring(start+1);
      request.setAttribute(name, fileName);
    
      item.write(new File(path,fileName));
      /*OutputStream os=new FileOutputStream(new File(path,fileName));
    
      InputStream is=item.getInputStream();
    
      byte []buffer=new byte[400];
      int length=0;
    
      while((length=is.read(buffer))>0)
      {
       os.write(buffer,0,length);
      }
      os.close();
      is.close();*/
    
     }
    }
   }
   catch (Exception e) {
    e.printStackTrace();
   }
   request.getRequestDispatcher("/result.jsp").forward(request, response);
}

}

注意:需要添加commons-fileupload.jar commons-io.jar

-------check_file.js

 

var fileForm = new Object();
function checkFileSize(fileObj) {
  if(fileObj.value != "") {
    var form = document.forms['upfile_form'];

    //把form的原始数据缓存起来
    fileForm.f = form;
    fileForm.a = form.getAttribute("action");  //form.action 为一个静态的对象,所以这里要使用getAttribute方法取值
    fileForm.t = form.target;

    //请求服务器端
    form.target = "check_file_frame";
    //form.action = "./ajax.php?act=upload";
    form.action = "UploadServlet";
    //form.submit(); 其实上面的action已经会执行submit操作,这步可有可无
  }
  return false;
}

function ajax_callback(result) {
  //还原form属性
  fileForm.f.target = fileForm.t;
  fileForm.f.setAttribute("action", fileForm.a);

  //处理结果
  switch(result) {
    case 0:
      alert("文件超过了200K或者没有选择文件,请重新上传!");
      //todo somthing
    default :
      alert("合法");
      //do somthing,如果你想使用这种方法实现真正的上传的话,那么在成功后把返回的文件路经存储在一个 input[hidden]里是个不错的办法
  }
  return ;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值