亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

java - input file類型上傳了一個文件,想計算一下上傳文件的大???
ringa_lee
ringa_lee 2017-04-18 10:51:20
0
3
744

上傳成功之后,用 request.getParameter("filetxt");拿到的是一個路徑:C:fakepathtest.txt
這個路徑并非是我本地的路徑,已上傳就已經是這個路徑了。
現在我用了一個方法,來計算這個文件的大小,但是沒有成功,不知道為什么?
計算大小的方法如下:

public void getFileSize(String path){
        //傳入文件路徑
        File file = new File(path);
        //測試此文件是否存在
        if(file.exists()){
            //如果是文件夾
            //這里只檢測了文件夾中第一層 如果有需要 可以繼續(xù)遞歸檢測
            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

全部回覆(3)
伊謝爾倫

文件上傳傳輸的格式與一般的表單提交不同,它使用了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 ,具體使用可參考官方文檔,不再贅述

Peter_Zhu

file.exists()回傳false,從你的檔案路徑能看出 不見了,需要檢查一下是在哪個過程被過濾掉。

巴扎黑

上傳檔案給你的路徑是 C:fakepathtest.txt 從這個名字就可以看出來這是一個假的路徑。

這個路徑是瀏覽器在上傳給你的時候給你的,這個路徑不是你伺服器上真實存在的路徑。所以你拿這個路徑到伺服器上找這個檔案是不可能找到的。

最新下載
更多>
網站特效
網站源碼
網站素材
前端模板