Struts文件上传
首先在表单中的from的写法是这样的:
| 
 1 
2 
3 
4 
5 
 | 
<from action="File_add.action" method="post" enctype="multipart/form-data">    FileName:<input type="text" name="fileName">    File:<input type="file" name="file">    <input type="submit" value="Sub"></from> | 
这里的enctype="multipart/from-data" 指的是上传二进制流
在action对象中设置一个File类型的file和String类型的fileName,并提供getter && setter方法。
然后按照常理,我们可以获取到file, 但是是可以正常获取的,在add方法的return打上一个断点,用debug模式来启动,可以看到file里面以已经有值了,不过名称看不懂,并且该上传文件的类型是一个.temp临时类型。
所以接下来该把文件名和类型名解析出来:
Struts需要我们提供一个getter&&setter即可, 即: 属性的file+FileName 和 file+ContentType 这样的组合名称: eg:fileFileName 和fileContentType 这样的名称,并且提供getter&&setter。
然后在add方法中打印出来: System.out.println(fileFileName+fileContentType); 即可打印出正常的文件名
最后,文件在系统中任然是一个temp的临时文件,我们需要转存到其他地方。
可以使用file的io流, 不过为了简单可以使用:
| 
 1 
2 
 | 
//FileUtils.copyFile("file","dest");    第一个参数指源文件,第二个指目标文件FileUtils.copyFile(file,new File("H:/temp/"+fileFileName)); | 
注意:斜杠不要写反了。 这样就可以转存到本地磁盘中的H盘中了。
另外,对于交大的文件,比如超过2M的文件,就会出现异常了,原因是Struts默认只能上传2兆多点的文件。
设置方法,打开Struts.defult文件,里面有一个struts.multipart.maxSize=xxxxx
copy然后 在Struts.xml文件中添加一个常亮:
<constant name="struts.multipart.maxSize" value="10240000"/> 可以支持最大10M的文件了。
                    
                
                
            
        
浙公网安备 33010602011771号