struts2中的文件上传和下载

xiaoxiao2022-06-12  39

struts2中的文件上传和下载: 1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包 2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data" 3.再次,struts2中文件上传将底层高度封装了。在使用时只需要在ACTION中添加三个字段(其中 List<File> files为必填项),并为其设置get set 属性。 4.接下来你要做的只是将files中的文件对象保存到磁盘即可。 这样就完成了文件上传。如果需要控制上传文件,则需要在struts.xml文件中配置struts2内置的文件上 传拦截器即可。 <interceptor-ref name="fileUpload"> <param name="maximumSize">2MB</param> <param name="allowedTypes">text/html,image/jpeg</param> </interceptor-ref> <interceptor-ref name="basicStack"/> 需要注意的是<interceptor-ref name="basicStack"/>不能省,因为如果只配置fileUpload拦截器,则其 他的拦截器将失效。 而文件下载可能相对比较简单,具体操作如下: 1.在ACTION中建立一个返回类型为InputStream的方法。如: public InputStream getTargetFile() throws Exception { return ServletActionContext.getServletContext().getResourceAsStream(String 文件的路 径); } 处理原理为:所有的下载文件都是将一个二进制的流写入到HttpResponse中去。在Action类中定义一个 InputSream类型的二进制流,在Result返回时返回给用户。 2.在struts.xml中配置ACTION信息 <action name="downloadFile" class="com.jpleasure.ImageUploadAction"> <result name="success" type="stream"> <param name="contentType">image/pjpeg</param> <param name="inputName">imageInputStream</param> <param name="contentDisposition">attachment;filename="image.jpg"</param> <param name="bufferSize">1024</param> </result> </action> ContentType表示下载文件的类型。 InputName表示Action类中用来下载文件的字段的名字。 ContentDisposition用来控制文件下载的一些信息,包括是否打开另存对话框,下载文件名等。 BufferSize表示文件下载时使用的缓冲区的大小。 struts.xml配置示例: <action name="save" class="com.globalzt.struts2.action.StudentAction" method="save"> <result name="success">/studentSuccess.jsp</result> <result name="error">/studentManagement.jsp</result> <result name="input">/studentManagement.jsp</result> <!-- 配置struts2中写好的拦截器,所以name名称不能随便写 --> <interceptor-ref name="fileUpload"> <param name="allowedTypes">image/bmp,image/gif,image/jpeg,image/png</param> <param name="maximumSize">409600</param> </interceptor-ref> <!-- 这句话不能省,否则将忽略其他的拦截器 --> <interceptor-ref name="defaultStack"></interceptor-ref> </action> <action name="download" class="com.globalzt.struts2.action.DownloadAction" method="download"> <!-- 这里可以添加需要向ACTION中传递的值,方式为注入:name属性的名称自己定义 --> <!-- <param name="inputPath">\files\Winter.jpg</param> --> <result name="success" type="stream"> <!-- 接下来的参数为设置HTTP头信息,在配置的时候要注意name的名称是定死的,不能擅自更改。参见:struts2-core-2.0.11下的org.apache.struts2.dispatcher.StreamResult类 --> <param name="inputName">inputStream</param> <!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性对应action类中的方法 getDownloadFileName() --> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">4096</param> </result> </action>
转载请注明原文地址: https://www.6miu.com/read-4933723.html

最新回复(0)