springboot MultipartFile 上传文件和下载

// 上传!!  工具类
public static String  uploadFile(byte[] file, String filePath, String fileName) throws Exception { 

        File targetFile = new File(filePath);  
    
        if(!targetFile.exists()){    
            targetFile.mkdirs();    
        }       
        
        String pathas=filePath+fileName;
        FileOutputStream out = new FileOutputStream(pathas);
       
        out.write(file);
        out.flush();
        out.close();
        
        return pathas;

    }

// 检测报告添加接口 文件上传
@RequestMapping(value="/testuploadimg", method = {RequestMethod.POST,RequestMethod.GET})
    public  String uploadImg(@RequestParam("file") MultipartFile file,HttpServletRequest request,@RequestParam("cardnum")String cardnum,@RequestParam("remark")String remark,@RequestParam("examinee")String examinee,@RequestParam("pathname")String pathname ) {
        String contentType = file.getContentType(); // 获取文件内容类型
        String fileName = file.getOriginalFilename();  // 获取上传文件名字
        
        String filePath = request.getSession().getServletContext().getRealPath("/upload/");  // 绝对路径


        System.out.println("filePath="+filePath);
//         System.out.println("filePath="+filePath);
        try {
       
            String uploadFile = HttpUtility.uploadFile(file.getBytes(), "E://upload/", fileName);
            
            String addreport = cardservice.addreport(uploadFile,cardnum,remark,examinee,pathname);
            
            return addreport;
            
        } catch (Exception e) {
            // TODO: handle exception
        }
        //返回json
        return JSON.toJSONString(ResultsUtils.error(ResultEnums.UPLOAD_FILE_ERROR));
    }


  // 文件下载
   @RequestMapping("/downreport")
   public String downreport(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
   
   String paee=request.getParameter("path");
   System.out.println("paee="+paee); 
//    String filke=request.getSession().getServletContext().getRealPath("/upload/");
//    System.out.println("filke="+filke);
   paee=paee.trim();
   String flienames=  paee.substring(paee.lastIndexOf("/")+1,paee.length());
   System.out.println("flienames="+flienames);
  
   response.setHeader("content-type", "application/octet-stream");
   response.setContentType("application/octet-stream");
   response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(flienames,"UTF-8"));
    byte[] buff = new byte[1024];
    BufferedInputStream bis = null;
    OutputStream os = null;
    try {
      os = response.getOutputStream();
      bis = new BufferedInputStream(new FileInputStream(new File(paee)));  //填写访问路径
      int i = bis.read(buff);
      while (i != -1) {
        os.write(buff, 0, buff.length);
        os.flush();
        i = bis.read(buff);
        
      }
    } catch (IOException e) {
//     e.printStackTrace();
   
    } finally {
      if (bis != null) {
        try {
          bis.close();
          
        } catch (IOException e) {
//           e.printStackTrace();
        }
      }
      if(os!=null){
      try {
os.close();
} catch (IOException e) {
// e.printStackTrace();
}
      }  
    }
    
    System.out.println("下载成功!");
  
    return null;
    
   }
   



--------------------------------------------------前端js--------------------------------------------------------------------------





<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="../Css/bootstrap.css" />
    <link rel="stylesheet" type="text/css" href="../Css/bootstrap-responsive.css" />
    <link rel="stylesheet" type="text/css" href="../Css/style.css" />
    <script type="text/javascript" src="../Js/jquery.js"></script>
    <!-- <script type="text/javascript" src="../Js/jquery.sorted.js"></script> -->
    <script type="text/javascript" src="../Js/bootstrap.js"></script>
    <script type="text/javascript" src="../Js/ckform.js"></script>
    <script type="text/javascript" src="../Js/common.js"></script>
 <script type="text/javascript" src="../Js/api.js"></script>
    


    <style type="text/css">
        body {
            padding-bottom: 40px;
        }
        .sidebar-nav {
            padding: 9px 0;
        }


        @media (max-width: 980px) {
            /* Enable use of floated navbar text */
            .navbar-text.pull-right {
                float: none;
                padding-left: 5px;
                padding-right: 5px;
            }
        }


#FileUpload {
width: 210px;
height: auto;
position: relative;
cursor: pointer;
outline: medium none;
filter: alpha(opacity=0);
-moz-opacity: 0;
/*opacity: 0;*/
border: 0px solid red ;
}


 #son {width:100px; height:10px; background-color:red; text-align:center; line-height:10px; font-size:20px; font-weight:bold; border: 0px solid red;margin-top: 200px;}  
   #parent{width:100%; height:100%; border:0px solid #09F;position: absolute;top: 0px; display: none;opacity:0.5;text-align: center; background-color:  #C0C0C0}  


    </style>
</head>
<body>
<form  id="form" action=""  enctype="multipart/form-data" method="post" >
<table class="table table-bordered table-hover definewidth m10"  style="text-align: center;">
   
    <tr>
        <td class="tableleft"  width="10%">上传报告:</td>
        <td>
             <input   id="FileUpload" type="file" name="file"/>
    </td>
    </tr>


    <tr>
        <td class="tableleft"  width="10%">报告名称:</td>
        <td>
             <input     type="text" name="pathname" id="pathname"/>
    </td>
     
    </tr>


    <tr>
        <td class="tableleft">卡号:</td>
        <td><input type="text" name="cardnum"  id="cardnum"/></td>
    </tr>
    <tr>
        <td class="tableleft">受检人:</td>
           <td>
       <select  id="examinee"  style="width: 210px; height: auto ;">
<!-- <option value="" style="text-align: center;"></option> -->
<!-- <option value="李四">李四</option> -->
<!-- <option value="王五">王五</option> -->
       </select>
</td>
    </tr>
    <tr>
        <td class="tableleft">备注:</td>
        <td>
           <input type="text" name="remark"  style="height: 50px;" id="remark">
        </td>
    </tr>


  <!--   <tr>
        <td class="tableleft">备注:</td>
        <td>
           <a href="F://上传文件/Java数据结构和算法.(第二版).pdf"      download="F://上传文件/Java数据结构和算法.(第二版).pdf"  name="remark"  style="height: 50px;" id="remark" > 数据接口算法</a>
        </td>
    </tr>
 -->
    <tr>
        <td class="tableleft"></td>
        <td>
            <button type="button" class="btn btn-primary" type="button"  id="btn">保存</button> &nbsp;&nbsp;<button type="button" class="btn btn-success" name="backid" id="backid">返回列表</button>&nbsp;&nbsp;<button type="button" class="btn btn-success" id="restss"  >重置</button>
        </td>
    </tr>
</table>
</form>


<div id="parent">
    <div id="son"></div>
</div>




</body>
</html>
<script>
    $(function () {       


      // 返回列表
$('#backid').click(function(){
window.location.href="index.html";
});


    });


// 重置
    $("#restss").click(function() {


           reset();
       $("#examinee").find("option").remove();
       $("#file").val("");


    });


//  卡号光标离开事件
$("#cardnum").blur(function(){


     var cardnum=$("#cardnum").val();
    if(isNull(cardnum)){
      alert("卡号不能为空!");
      // $("#cardnum").focus();
return false ;
    }
    else {
      // 受检人信息
examinees(cardnum);


    }


})


// 显示受检人信息
function examinees(cardnum){
  $.ajax({
  url: url1+api.searchname+"cardnum="+cardnum,
  type: 'get',
  dataType: 'json'
})
.done(function(data) {
  console.log(data); 
  if(data.results.status==603){
    alert("卡号没有对应的受检人!");
    $("#cardnum").val("");
    $("#examinee ").empty();


    return false ;
  }
  else {
 var  str="";
 while(data.results.result!=0){
 var  datas= data.results.result.shift();
     str+='<option value='+datas.id+'> '+datas.examinee_name+'</option>';
   
 }


    $("#examinee").html(str);
  }
})
.fail(function(error) {
  console.log("error");
});


}


   // BUI.use('bui/uploader',function (Uploader) {
          
   //    *
   //     * 返回数据的格式
   //     *
   //     *  默认是 {url : 'url'},否则认为上传失败
   //     *  可以通过isSuccess 更改判定成功失败的结构
       
   //    var uploader = new Uploader.Uploader({
   //      render: '#J_Uploader',
   //      url: '../../../test/upload/upload.php'
   //    }).render();
   //  });








// 上传获取文件
// var imgs=[];//存储图片链接
 // var fileM=document.querySelector("#file");    //  获取文件对象
 // var  fileM=document.getElementById("FileUpload").files[0];  // 获取文件对象
 // console.log(fileM);
// console.log($("#FileUpload").get(0).files[0]);


   //为文件上传添加change事件
   // var fileObj;
//  $("#file").on("change",function(){
//   // console.log(fileM.files);
//   //获取文件对象,files是文件选取控件的属性,存储的是文件选取控件选取的文件对象,类型是一个数组
//    fileObj=fileM.files[0];
//   // console.log(fileObj);
//   //创建formdata对象,formData用来存储表单的数据,表单数据时以键值对形式存储的。
//   formData.append('file',fileObj);
// })






// 提交点击事件
   $("#btn").click(function(){
                                         var formData=new FormData();  // 定义一个formdata对象
                                          //创建ajax对象
                                       var ajax=new XMLHttpRequest();
                                               // var ddnum=$("#ddnum").val();
                                               var cardnum=$("#cardnum").val();
                                               // var flownum=$("#flownum").val();
                                               var examinee=$("#examinee option:selected").val();
                                               var remark=$("#remark").val();
                                              var pathname=$("#pathname").val();
                             
                                      if(isNull(cardnum)||isNull(examinee)||isNull(pathname)){


                                              alert("内容不能为空");
                                              console.log("内容不能");
                                              return  ;
                                       }else{
                                                    // formData.append("orderid",ddnum);
                                   $("#parent").css("display","block");
                                                   var  fileM=document.getElementById("FileUpload").files[0];  // 获取文件对象
                                           // console.log(fileM);
                                                   formData.append('file',fileM);
                                                   formData.append("cardnum",cardnum);
                                                   formData.append("remark",remark);
                                                   // formData.append("flownum",flownum);
                                                   formData.append("examinee",examinee);
                                                   formData.append("pathname",pathname);
                                   //发送POST请求
                                   // ajax.open("POST",url1+api.testuploadimg,true);
                                   // ajax.send(formData);
                                      $.ajax({ 
                                      url : url1+api.testuploadimg, 
                                      type : 'POST', 
                                      data : formData, 
                                      // 告诉jQuery不要去处理发送的数据
                                      processData : false, 
                                      // 告诉jQuery不要去设置Content-Type请求头
                                      contentType : false,
                                       xhr: function(){   // 显示进度条
      var xhr = $.ajaxSettings.xhr();
      if(onprogress && xhr.upload) {
        xhr.upload.addEventListener("progress" , onprogress, false);
        return xhr;
      }
    } ,
                                      success : function(responseStr) {
                                        var data=JSON.parse(responseStr);
                                      console.log(data); 
                                      console.log("success");
                                      if(data.results.status==4){
                                            alert(data.results.message);
                                            window.location.href="index.html";
                                      }
                                      else {
                                            alert("添加失败!");
                                           reset();
                                      }
                                      }, 
                                      error : function(responseStr) { 
                                      console.log("error");
                                      } 
                                      });
                              //      ajax.onreadystatechange=function(){
                              //      if (ajax.readyState == 4) {
                              //       // console.log(ajax.responseText);
                              //       if (ajax.status>=200 &&ajax.status<300||ajax.status==304) {
                              //       // console.log(ajax.responseText);
                              //        // var  obj=ajax.responseText;
                              //       var obj=JSON.parse(ajax.responseText);
                              //       // console.log(obj);
                              //       if(obj.results.status==4){
                              //     alert(obj.results.message);
                              //       window.location.href="index.html";
                              //       }
                              //       }else{
                              //            alert("添加失败!");
                              //           reset();
                              //       }
                              //           }
                              // }
}






   })


function onprogress(evt){
  // console.log(123123);
  var loaded = evt.loaded;                  //已经上传大小情况 
   var tot = evt.total;                      //附件总大小 
   var per = Math.floor(100*loaded/tot);     //已经上传的百分比  
  $("#son").html( per +"%" );
   $("#son").css("width" , per +"%");
}


</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值