想做一个根据用户提供的文件地址,然后根据文件的路径对文件进行检测,但是弄了好久发现仅仅只能获取到文件名,不能获取到文件的所在路径,查了好多资料,无果,所以换了种方法来实现。借用Struts2中的fileupload功能。
<form action="fileInfo" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>请选择待检测的文件:</td>
<td><input type="file" name="filename" ></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
在action文件中写上
package com.emptyResult;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import com.opensymphony.xwork2.ActionSupport;
public class FileInfo extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
File filename; //获取上传的文件;
String filenameContentType;//获取上传文件的文件类型;
String filenameFileName;//获取上传文件的名称;
public File getFilename() {
return filename;
}
public void setFilename(File filename) {
this.filename = filename;
}
public String getFilenameContentType() {
return filenameContentType;
}
public void setFilenameContentType(String filenameContentType) {
this.filenameContentType = filenameContentType;
}
public String getFilenameFileName() {
return filenameFileName;
}
public void setFilenameFileName(String filenameFileName) {
this.filenameFileName = filenameFileName;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new FileReader(filename));
String str;
while((str = br.readLine())!=null)
System.out.println(str);
return "success";
}
}
利用Struts2中的commons-fileupload-1.3.1.jar 提供的功能,但是一定要记住在action中要声明3个变量,变量的命名也是有一定的规定,红色注释部分的名称应该一致。
可能是由于安全的考虑,直接获取上传文件的本地地址行不通,此时可以对上传的文件进行相应的文件处理,相当于文件的副本被上传,所以我们想对文件的任何处理都可以通过处理这个文件的副本来完成。