Dim*_* R. 5 struts2 web-applications
我使用Struts 2上传文件,然后内容进入数据库.在数据库中,我存储文件内容,内容类型和文件名,因为它在客户端机器上(无论客户在选择要上载的文件时在"浏览"中看到什么 - 例如'myFIle.txt').但是,问题是,当我将文件存储到数据库时,它发生在服务器上,那时我只看到文件名,因为它是在上传到TEMP DIRECTORY ON SERVER之后.(如373_393jfu_39.tmp)
我们如何访问实际在客户端上的文件的名称?我知道出于安全原因,struts会以某种方式隐藏上传过程......但是有没有办法在其间进行攻击?
请参阅http://struts.apache.org/2.0.14/docs/file-upload.html上的示例
如果您提供了setXFileName(String fileName)setter ,则可以在客户端计算机上获取文件名.
要使文件保留原始文件名而不是上载到服务器时收到的临时文件名,您可以执行以下操作:
String targetXFilename = PATH_TO_DIRECTORY + "/" + getXFileName();
File targetXFile = new File(targetXFilename);
try {
FileUtils.copyFile(getXFile(), targetXFile);
} catch(IOException e) {
return Consts.RET_ERROR_EXCEPTION_IO;
}
Run Code Online (Sandbox Code Playgroud)