日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2框架使用(十)之struts2的上传和下载

發(fā)布時間:2023/11/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2框架使用(十)之struts2的上传和下载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Struts2? 文件上傳

首先是Struts2的上傳,Struts2 文件上傳是基于 Struts2 攔截器實(shí)現(xiàn)的,使用的是fileupload組件;

首先如果想要上傳文件,則需要在表單處添加?enctype="multipart/form-data" 屬性。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>文件上傳</h1> <s:fielderror></s:fielderror> <form action="upload" method="post" enctype="multipart/form-data">姓名:<input type="text" name="name" />文件:<input type="file" name="java1234"/><br/><input type="submit" value="提交"/> </form> <h1>多文件上傳</h1> <s:fielderror></s:fielderror> <form action="uploads" method="post" enctype="multipart/form-data">文件1:<input type="file" name="java1234"/><br/>文件2:<input type="file" name="java1234"/><br/>文件3:<input type="file" name="java1234"/><br/><input type="submit" value="提交"/> </form> </body> </html>

然后在Action中獲取數(shù)據(jù)需要按照一定格式來獲取:

Struts2 獲取上傳文件:name (name 是文件表單的 name)
Struts2 獲取上傳文件名:name+FileName;
Struts2 獲取上傳文件的類型:name+ContentType;

import java.io.File;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionSupport;public class FileUploadAction extends ActionSupport{/*** 文件上傳*/private static final long serialVersionUID = 1L;private File java1234; // 文件private String java1234FileName; // 文件名private String java1234ContentType; // 文件類型private String name;@Overridepublic String execute() throws Exception {System.out.println("name=" + name);System.out.println("文件名:"+java1234FileName);System.out.println("文件類型:"+java1234ContentType);//這里寫的是存儲路徑String filePath="C:/"+java1234FileName;//根據(jù)路徑創(chuàng)建一個文件File saveFile=new File(filePath);//將上傳得到文件流復(fù)制到路徑所創(chuàng)建的文件上 FileUtils.copyFile(java1234, saveFile);return SUCCESS;}

之后再struts.xml文件中配置Action即可,注意:這里的校驗(yàn),是先校驗(yàn)package外的最大大小,一旦超過則拋出異常,不會進(jìn)入到action中。

通過package外最大文件上傳校驗(yàn)后,進(jìn)入到action內(nèi)部的攔截器校驗(yàn)時,一旦攔截,則會返回個input字段。

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- Struts2 最大文件上傳大小默認(rèn)是 2M <constant name="struts.multipart.maxSize" value="20000000"></constant>--><package name="manager" extends="struts-default"> <action name="upload" class="com.mrlv.action.FileUploadAction"><result name="success">/success.jsp</result><result name="input">/fileupload.jsp</result><!-- 配置文件的大小及類型 --><!-- 允許后綴名為png,bmp,jpg,doc,xls的文件上傳<interceptor-ref name="fileUpload"><param name="allowedExtensions"> png,bmp,jpg,doc,xls </param> </interceptor-ref>--> <!-- 下面是限定文件類型以及文件大小 --><interceptor-ref name="fileUpload"><param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg,image/pjpeg</param><param name="maximumSize">81101</param></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref> </action></package> </struts>

?這里就是簡單的文件上傳了。如果是多文件上傳的話,只需要在Action中接收file的時候,創(chuàng)建數(shù)組類型即可。

?

Struts2? 文件下載

關(guān)于文件下載,返回的是文件流。

所以在創(chuàng)建Action的時,如下

package com.mrlv.action;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.UnsupportedEncodingException;import com.opensymphony.xwork2.ActionSupport;public class FileDownloadAction extends ActionSupport{/*** */private static final long serialVersionUID = 1L;private String fileName;//返回的是一個文件流public InputStream getInputStream() throws FileNotFoundException {//這里取得是下載文件的路徑File file = new File("C:/LX.txt");//給文件命名,中文可能回有點(diǎn)問題this.fileName = "LX.txt";//返回一個文件流return new FileInputStream(file);}public String getFileName() throws UnsupportedEncodingException {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}}

?

在struts.xml中的配置

<action name="download" class="com.mrlv.action.FileDownloadAction"><result type="stream"><!-- attachment這個參數(shù),表示跟附件一樣,filename這個參數(shù)是下載文件名${fileName}通過get方法獲得 --><param name="contentDisposition">attachment;filename=${fileName}</param></result></action>

接下來在jsp頁面調(diào)用即可。

<a href="download">文件下載</a>

?

轉(zhuǎn)載于:https://www.cnblogs.com/lvshiyu/p/8086647.html

總結(jié)

以上是生活随笔為你收集整理的Struts2框架使用(十)之struts2的上传和下载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。