AJax上传文件

1 编写一个文件上传的页面 
    post     包含文件上传的控件 type="file"
    FormData 类型的参数进行文件和普通数据的传递 
        当然ajax 还要进行 contentType:false  processData:false

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
  function  sendAJAX(){
      var  fdata = new FormData();
      fdata.append("acc_no",$("#acc_no").val());
      fdata.append("mf",$("#mf")[0].files[0]);
      $.ajax({
          url:"register2.do",
          type:"post",
          success:function(imgPath){
              $("#showImg").attr("src",imgPath);
          },
          data:fdata,
          contentType:false,
          processData:false
      });
  }
</script>
</head>
<body> 
   <img alt=""  id="showImg" 
     src="imgs/94d0e152-e2a2-4a91-8a1a-2cb3f43bea2b.png"  width="200px"> <br> 
  
               账号:<input  type="text"  name="acc_no"  id="acc_no"> <br>
               头像:<input  type="file"  name="mf"  id="mf" > <br>
       <input  type="button"  value="上传"  οnclick="sendAJAX()">
 
</body>
</html>
 2 编写一个文件上传的控制器 
        在这个控制器中 需要解析 http请求 解析http请求需要借助第三方jar包  
        把文件数据和非文件数据解析出来  写到对应的磁盘位置
        把图片的路径以字符串 写回即可

       // 构建一个磁盘文件条目工厂对象
        DiskFileItemFactory  sfif = new  DiskFileItemFactory();
        // 构建servlet文件上传对象
        ServletFileUpload  sfu =  
            new ServletFileUpload(sfif);
        try {
            // 解析http 请求 
            List<FileItem>  items = sfu.parseRequest(request);
            for(FileItem  it : items){
                // 判断是不是文件数据 
                if(it.isFormField()){
                    // 这是非文件数据
                    System.out.println(it.getFieldName()+":"
                     +it.getName() +":"+ it.getString());
                }else{
                    // 就是文件数据
                    System.out.println(it.getFieldName()+":"
                             +it.getName() +":"+ it.getSize());
                    // 获取你的原始文件名
                    String oFileName = it.getName();
                    // 获取文件对应的后缀   a.txt.txt.png
                    String  suffix = oFileName.substring(
                            oFileName.lastIndexOf("."));
                    String  uFileName = UUID.randomUUID().toString();
                    String  fileName = uFileName + suffix;
                    // 获取imgs 文件夹 真实的磁盘路径 
                    String  realPath = request.getServletContext().getRealPath("imgs");
                    File  file  = new File(realPath+"/"+fileName);
                    it.write(file);
                    // 把图片的相对路径以字符串写回 
                    PrintWriter  pw = response.getWriter();
                    pw.write("imgs/"+fileName);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值