上传成功之后,用 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")
结果是:此文件不存在
ファイルアップロード送信の形式は、一般的なフォーム送信の形式とは異なり、
request.getParameter
でデータをエンコードするためにmultipart/form-data
形式が使用されます。 -値ペア、ファイル 特別な処理が必要であり、主に 2 つの部分に分かれています。multipart/form-data
格式编码数据,request.getParameter
只能得到键值对,文件需要做特殊处理,主要分为两部分。前台处理,确认你前台
form
表单的enctype
属性为multipart/form-data
,示例:后台处理。
tomcat7
以上可直接使用原生APIHttpServletRequest.getPart()
,在servlet
中:具体使用可参考javaee文档
servlet3.0(Tomcat7)
以下版本,需要第三方jar
包来帮助解析上传的文件。一般使用Apache的commons-fileupload
、commons-fileupload-io
- フォアグラウンド処理。フロントエンド
リーリーform
フォームのenctype
属性がmultipart/form-data
であることを確認します。例: 🎜- 🎜バックグラウンド処理。
リーリー 🎜具体的な使用方法については、javaee ドキュメントを参照してください。tomcat7
以降では、servlet
でネイティブ APIHttpServletRequest.getPart()
を直接使用できます: 🎜servlet3.0(Tomcat7)
またはそれ以前のバージョンでは、アップロードされたファイルの解析にサードパーティのjar
パッケージが必要です。ファイル。一般的には、Apache のcommons-fileupload
とcommons-fileupload-io
が使用されます。具体的な使用方法については、公式ドキュメントを参照してください。詳しくは説明しません🎜。file.exists() は false を返します。ファイル パスから、どのプロセスが除外されているかを確認する必要があります。
ファイルをアップロードするパスは C:fakepathtest.txt です。この名前から、これが偽のパスであることがわかります。
このパスは、サーバーに実際に存在するパスではありません。したがって、このパスを使用してサーバー上でこのファイルを検索しても、見つけることはできません。