文件上传和下载相对路径

上传存的是相对路径 http://127.0.0.1/tomcat.....

public  String  upload  ()  {

File filePath = new File(ServletActionContext.getServletContext().getRealPath("/"));
      String savePath = filePath.getParentFile().getParent()+"/attachment/securitysupervision";
       File root = new File(savePath);
       if (!root.exists()) {
        //创建临时目录
        root.mkdirs();
        System.out.println( root.mkdir());
       }
          InputStream is = new FileInputStream(file);
          //得到上传文件的扩展名 .xle
          String fileExtName = fileFileName.substring(fileFileName.lastIndexOf(".")+1);
      
          //得到文件的真实的保存目录
          String realSavePath = servletRequest.getScheme() + "://"+ servletRequest.getServerName() + ":" + servletRequest.getServerPort()+servletRequest.getContextPath()+"/attachment/securitysupervision/";
          //String realSavePath = makePath(fileFileName, savePath);
          //修改文件的存储名字,防止文件多了出现重名保存失败
         String  storeName = makeFileName(fileFileName);
         
          //创建一个文件输出流
          OutputStream os = new FileOutputStream(savePath + "\\" + storeName);
          byte[] buffer = new byte[1024];
          int length = 0;
          while(-1 != (length = is.read(buffer, 0, buffer.length)))
          {
            os.write(buffer);
          }
          os.close();
          is.close();
        
      //数据库存储的字段和名字
      String  urlAndName = realSavePath +storeName ;
      kbm.setKbmAdjunct(urlAndName);
      
         }catch (Exception e) {
      
           e.printStackTrace();
           return  "error" ;
         }

}

 

下载文件

 Kbm kbm = kbmService.selectAddrByKbmId(kbmQuery.getId()) ;
   String urlAndName = kbm.getKbmAdjunct();
  if (urlAndName != null && !urlAndName.equals("")) {
    // 处理获取到的上传文件的文件名的路径部分,只保留文件名部分
    HttpServletRequest request=ServletActionContext.getRequest();
    String basePath=request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+request.getContextPath();
   System.out.println(basePath);
    String url = urlAndName.substring(basePath.length()+1, urlAndName.lastIndexOf("/"));
   String storeName = urlAndName.substring(urlAndName.lastIndexOf("/") + 1);
   String realName = storeName.substring(storeName.indexOf("_") + 1);
   // 上传的文件都是保存在/WEB-INF/upload目录下的子目录当中
   //File file = new File(url + "" + storeName);
   File filePath = new File(ServletActionContext.getServletContext().getRealPath("/"));
    String savePath = filePath.getParentFile().getParent()+"/attachment/securitysupervision";
   System.out.println(savePath);
   File file = new File(savePath + "/" + storeName);
   
   // 如果文件不存在
   if (!file.exists()) {
    // 错误提示
    servletRequest.setAttribute("message", "您要下载的资源已被删除!!");
    servletRequest.getRequestDispatcher("/message.jsp").forward(
      servletRequest, servletResponse);
    return "";
   }

   // 处理文件名
   // String realname =
   // fileStoreName.substring(fileStoreName.indexOf("_") + 1);
   // 设置响应头,控制浏览器下载该文件
   servletResponse.setHeader(
     "content-disposition",
     "attachment;filename="
       + URLEncoder.encode(realName, "UTF-8"));
   // 读取要下载的文件,保存到文件输入流
   FileInputStream in = new FileInputStream(file);
   // 创建输出流
   OutputStream out = servletResponse.getOutputStream();
   byte buffer[] = new byte[1024];
   int len = 0;
   // 循环将输入流中的内容读取到缓冲区当中
   while ((len = in.read(buffer)) > 0) {
    // 输出缓冲区的内容到浏览器,实现文件下载
    out.write(buffer, 0, len);
   }
   // 关闭文件输入流
   in.close();
   // 关闭输出流
   out.close();
   
  
    return NONE;

转载于:https://www.cnblogs.com/xiaolaoda/p/7027187.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值