SpringBoot文件下载上传下载

文件下载:

public  void uploadcompressedfiles(String store_id , HttpServletResponse response, HttpServletRequest request ){
        Response response_1 = new Response ();
        String agent  =  request.getHeader ( "User-Agent" );//获取用户使用的浏览器
        //根据不同浏览器进行不同的编码
        String filenameEncoder = "";
        List<Map<String,Object>> ListMap  = jdbcTemplate.queryForList ( "SELECT UCF.store_id,UCF.updateFileName,UCF.generic_version FROM  upload_compressed_files UCF" );
        if(ListMap.size() == 0){
            response.setContentType("text/javascript;charset=utf-8");
            response.setHeader("content-type","application/json");
            response_1.setSuccess(false);
            response_1.setError("暂无版本更新!");
            try{
                response.getWriter().println( JSONObject.fromObject(response_1).toString());
            }catch(Exception e1){
                e1.printStackTrace();
            }
            return;
        }
        if("1".equals ( ListMap.get ( 0 ).get ( "generic_version" ) )){
            try {
                //ListMap.get ( 0 ).get ( "updateFileName" ).toString () ; 在数据库获取到文件得名字
                //updateUrl = /root/carrefour_private/static/interactive_log/100232565.zip 得到完整文件所在得位置和路径
                // public static String 文件所在位置 = "/root/carrefour_private/static/interactive_log/";
                String updateUrl = "文件所在位置"+ListMap.get ( 0 ).get ( "updateFileName" ).toString ();
                File f = new File(updateUrl);
                // ListMap.get ( 0 ).get ( "updateFileName" ).toString ();数据库文件得名字 如:123666632.zip
                if(f.exists()){
                    if(agent.contains ("MSIE")){  // IE浏览器
                        filenameEncoder = URLEncoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString (), "utf-8");
                        filenameEncoder = filenameEncoder.replace("+", " ");
                    }else if(agent.contains("Firefox")){// 火狐浏览器
                        BASE64Encoder base64Encoder = new BASE64Encoder ();
                        filenameEncoder = "=?utf-8?B?"+ base64Encoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString ().getBytes("utf-8")) + "?=";
                    }else{//其它浏览器
                        filenameEncoder = URLEncoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString (), "utf-8");
                    }
                    //response.setHeader("content-type", "application/octet-stream");
                    response.setContentType("application/octet-stream");
                    // response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(ListMap.get ( 0 ).get ( "updateFileName" ).toString (), "UTF-8"));
                    //告诉客户端该文件不是直接解析而是以附件形式打开(下载)
                    response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder);
                    byte[] buffer = new byte[1024];
                    FileInputStream fis = null;
                    BufferedInputStream bis = null;
                    try {
                        fis = new FileInputStream (f);
                        bis = new BufferedInputStream(fis);
                        OutputStream os = response.getOutputStream();
                        int i = bis.read(buffer);
                        while (i != -1) {
                            os.write(buffer, 0, i);
                            i = bis.read(buffer);
                        }
                    }
                    catch (Exception e) {
                        throw new Exception(e.getMessage());
                    }
                    finally {
                        if (bis != null) {
                            try {
                                bis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        if (fis != null) {
                            try {
                                fis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }

            }catch (Exception ee){
                ee.printStackTrace();
                response.setContentType("text/javascript;charset=utf-8");
                response.setHeader("content-type","application/json");
                response_1.setSuccess(false);
                response_1.setError("暂无版本更新!");
                try{
                    response.getWriter().println(JSONObject.fromObject(response_1).toString());
                }catch(Exception e1){
                    e1.printStackTrace();
                }
            }
        }
    }

文件上传:

public Response createCompress( MultipartFile updateFileName){


   //   文件要上传得目录或者服务器位置
    // 如 //  public static String update_File_zip = "D:/QingDao-CJZY-2019-4-10-domes/carrefour_private/code/service/src/main/resources/static/upload/";
    
  //   方法一:
        updateFileName.transferTo(new File(update_File_zip ));


  // 方法二:

    public List multipleImageUpload(@RequestParam("uploadFiles") MultipartFile[] files){

    List<Map<String,Object>> root=new ArrayList<Map<String,Object>>();
// //循环保存文件
for (MultipartFile file : files) {
//一个文件上传的结果
Map<String,Object> result = new HashMap<String, Object>();
//上传结果信息
String result_msg="";
if (file.getSize() / 1000 > 100) {
// result_msg="图片大小不能超过100KB";
} else {
//判断上传文件格式
String fileType = file.getContentType();
if (fileType.equals("image/jpeg") || fileType.equals("image/png") || fileType.equals("image/jpeg")) {
// 要上传的目标文件存放的绝对路径
final String localPath="D:\\demo";
//上传后保存的文件名(需要防止图片重名导致的文件覆盖)
//获取文件名
String fileName = file.getOriginalFilename();
//获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//重新生成文件名
fileName = UUID.randomUUID() + suffixName;
if (this.upload(file, localPath, fileName)) {
//文件存放的相对路径(一般存放在数据库用于img标签的src)
String relativePath="img/"+fileName;
//前端根据是否存在该字段来判断上传是否成功
result.put("relativePath",relativePath);
result_msg="图片上传成功";
}
else{
result_msg="图片上传失败";
}
}
else{
result_msg="图片格式不正确";
}
}
result.put("result_msg",result_msg);
root.add(result);
}
String root_json= JSON.toJSONString(root);
System.out.println(root_json);
return root;
}
public boolean upload(MultipartFile file, String path, String fileName) {
//确定上传的文件名
String realPath = path + "\\" + fileName;
File dest = new File(realPath);
//判断文件父目录是否存在
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdir();
}
try {
//保存文件
file.transferTo(dest);
return true;
} catch (IllegalStateException e) {
e.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}

}

 


}

posted on 2019-08-09 14:34  UnmatchedSelf  阅读(282)  评论(0编辑  收藏  举报

导航