java - input file类型上传了一个文件,想计算一下上传文件的大小?
ringa_lee
ringa_lee 2017-04-18 10:51:20
0
3
674

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

ringa_lee

membalas semua(3)
伊谢尔伦

Format muat naik dan penghantaran fail adalah berbeza daripada format penyerahan borang umum. Ia menggunakan format multipart/form-data untuk mengekod data request.getParameter hanya boleh mendapatkan pasangan nilai kunci dan dibahagikan terutamanya kepada dua bahagian.

  • Pemprosesan bahagian hadapan, sahkan bahawa atribut form bagi borang enctype bahagian hadapan anda ialah multipart/form-data, contoh:

    <form enctype="multipart/form-data" method="post" action="xxx">
      <input type="file" name="file" id="file" multiple /><br/>
    </form>
  • Pemprosesan latar belakang. tomcat7Yang di atas boleh terus menggunakan API asli HttpServletRequest.getPart(), dalam 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(); //获取文件输入流

Untuk penggunaan khusus, sila rujuk dokumentasi javaee
servlet3.0(Tomcat7) Versi berikut memerlukan pakej jar pihak ketiga untuk membantu menghuraikan fail yang dimuat naik. Secara amnya, Apache commons-fileupload dan commons-fileupload-io digunakan Untuk penggunaan khusus, sila rujuk dokumentasi rasmi dan tidak akan pergi ke butiran

Peter_Zhu

file.exists() mengembalikan palsu Ia boleh dilihat dari laluan fail anda bahawa ia tiada.

巴扎黑

Laluan untuk memuat naik fail kepada anda ialah C:fakepathtest.txt Anda boleh mengetahui daripada nama ini bahawa ini adalah laluan palsu.

Laluan ini diberikan kepada anda oleh penyemak imbas apabila ia dimuat naik kepada anda. Laluan ini bukanlah laluan yang sebenarnya wujud pada pelayan anda. Jadi jika anda menggunakan laluan ini untuk mencari fail ini pada pelayan, adalah mustahil untuk menemuinya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan