zoukankan      html  css  js  c++  java
  • 用IDEA学习getRealPath遇到的问题

    目的是从服务器端下载一个图片从而实现文件传输

     1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     2         //1.1获取文件名
     3         String filename = request.getParameter("filename");
     4 
     5         //1.2获得文件路径
     6         ServletContext servletContext = this.getServletContext();
     7         String realPath = servletContext.getRealPath("/img/" + filename);
     8 
     9         System.out.println(realPath);
    10         //1.3将文件读入内存中:输入流
    11         FileInputStream fis = new FileInputStream(realPath);
    12 
    13         //2.1设置response 的响应头类型
    14         String mimeType = servletContext.getMimeType("filename");
    15         response.setHeader("content-type","mimeType");
    16         //2.2设置response的响应头的打开方式
    17         response.setHeader("content-disposition","attachment;filename="+filename);
    18 
    19         //3.将文件输出:输出流
    20         ServletOutputStream sos = response.getOutputStream();
    21         byte[] buff = new byte[1024 * 5];
    22         int len = 0;
    23         while((len = fis.read(buff)) != -1){
    24             sos.write(buff, 0, len);
    25         }
    26         fis.close();



    实现效果:

     


    上面是我调试成功后的截图,而中间遇到的问题是:

    很好奇我已经用了getRealPath获取了文件的目录了,为什么还是找不到?

    然后我进入到C:UsersAdministratorIdeaProjectshellooutartifactsDay08_response_war_exploded这个目录下,发现根本没有img文件夹

    但是工程里是有了啊

    然后我试着输出了一下

    String realPath = servletContext.getRealPath("/123.jpg");
    System.out.println(realPath);

    123.jpg是个不存在的文件,但是我发现它还是给我输出了

    C:UsersAdministratorIdeaProjectshellooutartifactsDay08_response_war_exploded123.jpg

    不存在那输出个null也行啊

    。。

    找到项目下的img文件夹在C:UsersAdministratorIdeaProjectshelloDay08_responseweb

    我把这个文件夹复制到C:UsersAdministratorIdeaProjectshellooutartifactsDay08_response_war_exploded

    发现成了。


    我看到response_war_exploded这个文件夹除了img不存在以外都和response一样。

    因为response_war_exploded本来就是将web工程上传到服务器以后形成的一个文件夹,所以按道理web中项目的增加response_war_exploded是一致的。

    然后我发现我在web中创建一个123.txt文件后重启服务,response_war_exploded中就有了123.txt这个项目

    但是创建一个img文件夹就不行。

    之前我都是直接在IDEA中在项目中web那直接右键创建,我尝试着直接在web系统文件夹中手动创建再启动服务看看能不能成。

    然后我做了一个小试验:我在web系统文件下创建img1、img2文件夹,在IDEA中web文件夹下创建img3、img4,文件夹。再启动服务。

    一刷新,两边都有了,启动服务。

    在web系统文件夹直接创建是可以同步到response_war_exploded文件夹中的,但在IDEA直接创建就不行,这两者有什么不一样吗?

  • 相关阅读:
    中国的信息产业一定由中国的工商业养活,中国的工商业一定要养活自己的信息产业
    2017-2018-1 20155201 《信息安全系统设计基础》第十三周学习总结
    2017-2018-1 20155201 实验五 通讯协议设计
    《深入理解计算机系统》第二章 信息的表示与处理
    2017-2018-1 20155201 《信息安全系统设计基础》第十一周学习总结
    2017-2018-1 20155201 实验四 外设驱动程序设计
    信息安全技术 实验四 木马及远程控制技术
    实验四
    2017-2018-1 20155201 《信息安全系统设计基础》第九周学习总结
    cmder使用手册
  • 原文地址:https://www.cnblogs.com/zbzb1/p/10898588.html
Copyright © 2011-2022 走看看