java - input file类型上传了一个文件,想计算一下上传文件的大小?

 江西理工大学-交通091班-李吉平 发布于 2022-10-26 10:15

上传成功之后,用 request.getParameter("filetxt");拿到的是一个路径:C:fakepathtest.txt
这个路径并非是我本地的路径,已上传就已经是这个路径了。
现在我用了一个方法,来计算这个文件的大小,但是没有成功,不知道为什么?
计算大小的方法如下:

public void getFileSize(String path){
        //传入文件路径
        File file = new File(path);
        //测试此文件是否存在
        if(file.exists()){
            //如果是文件夹
            //这里只检测了文件夹中第一层 如果有需要 可以继续递归检测
            if(file.isDirectory()){
                int size = 0;
                for(File zf : file.listFiles()){
                    if(zf.isDirectory()) continue;
                    size += zf.length();
                }
                System.out.println("文件夹 "+file.getName()+" Size: "+(size/1024f)+"kb");
            }else{
                System.out.println(file.getName()+" Size: "+(file.length()/1024f)+"kb");
            }
        //如果文件不存在
        }else{
            System.out.println("此文件不存在");
        }
    }
    

调用方法:
String filetxt = request.getParameter("filetxt");
fileSize.getFileSize(filetxt);

(filetxt = "C:fakepathtest.txt")

结果是:此文件不存在

3 个回答
  • 上传文件给你的路径是 C:fakepathtest.txt 从这个名字就可以看出来这是一个假的路径。

    这个路径是浏览器在上传给你的时候给你的,这个路径不是你服务器上真实存在的路径。所以你拿这个路径到服务器上找这个文件是不可能找到的。

    2022-10-27 00:53 回答
  • file.exists()返回false,从你的文件路径能看出 \不见了,需要检查一下是在哪个过程被过滤掉。

    2022-10-27 00:53 回答
  • 文件上传传输的格式与一般的表单提交不同,它使用了multipart/form-data格式编码数据,request.getParameter只能得到键值对,文件需要做特殊处理,主要分为两部分。

    • 前台处理,确认你前台form表单的 enctype属性为multipart/form-data,示例:

        <form enctype="multipart/form-data" method="post" action="xxx">
          <input type="file" name="file" id="file" multiple /><br/>
        </form>
    • 后台处理。tomcat7以上可直接使用原生API HttpServletRequest.getPart(),在servlet中:

        Part filePart = request.getPart("file"); // 对应 <input type="file" name="file">
        long bytes = filePart.getSize(); //获取文件大小
        String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();//文件名
        InputStream fileContent = filePart.getInputStream(); //获取文件输入流

    具体使用可参考javaee文档
    servlet3.0(Tomcat7)以下版本,需要第三方jar包来帮助解析上传的文件。一般使用Apache的commons-fileuploadcommons-fileupload-io ,具体使用可参考官方文档,不再赘述

    2022-10-27 00:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有