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的文件了。  

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。