>  Q&A  >  본문

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

上传成功之后,用 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")

结果是:此文件不存在

ringa_leeringa_lee2743일 전646

모든 응답(3)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:53:20

    파일 업로드 및 전송 형식은 일반적인 양식 제출과 다릅니다. multipart/form-data 형식을 사용하여 데이터를 인코딩합니다. request.getParameter 파일은 특수한 처리가 필요하며 주로 구분됩니다. 두 부분으로.

    • 프런트 엔드 처리, 프런트 엔드 form 양식의 enctype 속성이 multipart/form-data인지 확인하세요. 예:

    으아악
    • 백그라운드 처리. tomcat7위의 내용은 HttpServletRequest.getPart()에서 네이티브 API servlet를 직접 사용할 수 있습니다:

    으아악

    구체적인 사용법은 javaee 문서를 참조하세요
    servlet3.0(Tomcat7) 다음 버전에서는 업로드된 파일을 구문 분석하는 데 도움이 되는 타사 jar 패키지가 필요합니다. 일반적으로 Apache의 commons-fileuploadcommons-fileupload-io을 사용합니다. 구체적인 사용법은 공식 문서를 참조하고 자세한 내용은 다루지 않습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:53:20

    file.exists()는 false를 반환합니다. 파일 경로를 보면 어떤 프로세스가 필터링되었는지 확인해야 합니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:53:20

    파일을 업로드할 경로는 C:fakepathtest.txt 입니다. 이 이름으로 보아 가짜 경로임을 알 수 있습니다.

    이 경로는 브라우저에 업로드될 때 제공됩니다. 이 경로는 실제로 서버에 존재하는 경로가 아닙니다. 따라서 이 경로를 사용하여 서버에서 이 파일을 찾으면 찾을 수 없습니다.

    회신하다
    0
  • 취소회신하다