久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

java - input file類型上傳了一個文件,想計算一下上傳文件的大小?

瀏覽:137日期:2024-01-19 17:49:02

問題描述

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

結果是:此文件不存在

問題解答

回答1:

文件上傳傳輸的格式與一般的表單提交不同,它使用了multipart/form-data格式編碼數據,request.getParameter只能得到鍵值對,文件需要做特殊處理,主要分為兩部分。

前臺處理,確認你前臺form表單的 enctype屬性為multipart/form-data,示例:

<form enctype='multipart/form-data' method='post' action='xxx'> <input type='file' name='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-fileupload、commons-fileupload-io ,具體使用可參考官方文檔,不再贅述

回答2:

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

回答3:

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

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

標簽: java
主站蜘蛛池模板: 安仁县| 巴彦淖尔市| 丹巴县| 正安县| 威远县| 葵青区| 城口县| 文化| 锡林浩特市| 长阳| 宜章县| 大余县| 东明县| 进贤县| 三明市| 仙居县| 盐津县| 阿克| 麻阳| 洛宁县| 秦安县| 沙田区| 旌德县| 鄢陵县| 宣化县| 孝义市| 绍兴县| 汝城县| 南丰县| 荥经县| 曲麻莱县| 永安市| 巴林右旗| 南召县| 武隆县| 吉林省| 安泽县| 镇沅| 德州市| 张家界市| 漠河县|