struts上傳文件配置
① 關於struts上傳文件類型的問題
您好 這是我以前存的,你看看是否對你有幫助,
配置fileupload攔截器
struts2的defaultStack中已經含有fileupload攔截器,如果想加入allowedTypes參數,需要從新寫一個defaultstack ,拷貝過來修改一下即可:
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/png,image/gif,image/jpeg
</param>
</interceptor-ref>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
僅修改代碼中的
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/png,image/gif,image/jpeg
</param>
</interceptor-ref>
上面配置的是上傳文件類型的限制,其實共有兩個參數
maximumSize (可選) - 這個攔截器允許的上傳到action中的文件最大長度(以byte為單位). 注意這個參數和在webwork.properties中定義的屬性沒有關系,默認2MB
allowedTypes (可選) - 以逗號分割的contentType類型列表(例如text/html),這些列表是這個攔截器允許的可以傳到action中的contentType.如果沒有指定就是允許任何上傳類型.
② struts2上傳文件時在struts.xml的配置有什麼意義
package提供了將多個Action組織為一個模塊的方式
package的名字必須是唯一的 package可以擴展 當一個package擴展自
另一個package時該package會在本身配置的基礎上加入擴展的package
的配置 父package必須在子package前配置
name:package名稱
extends:繼承的父package名稱
abstract:設置package的屬性為抽象的 抽象的package不能定義action 值true:false
namespace:定義package命名空間 該命名空間影響到url的地址!
③ struts2文件上傳和下載
1,上傳方法
(1),頁面form表單添加一個屬性為enctype="multipart/form-data" 和method="post"
(2),假設上傳預覽框為 <input type="file" name="myfile" />
(3),控制器接值的方法為
private File myfile; //要上傳的文件
private String myfileFileName; //要上傳文件名稱
private String myfileContentType; //要上傳文件類型
別忘了做set方法
(4), 接到值後可以保存到資料庫,也可以保存到硬碟,
>>1 保存到資料庫, 資料庫表中對應欄位要設置為BLOB類型
>>2 保存到硬碟代碼如下
InputStream in = new
FileInputStream( myfile);
OutputStream out = new
FileOutputStream( new File("d:\\upload\\"+myfileFileName));
byte[] buffer
= new byte[ in.available() ];
int ins =
in.read(buffer);//讀取位元組到buffer中
//ins == -1 時
。就已經是文件的結尾了
while ( ins !=
-1 ) {
out.write(buffer, 0, ins);//將緩存buffer中的數據寫到文件中
ins = in.read(buffer);
}
in.close();
out.flush();
out.close();
2,下載
(1), 把要下載的文件轉成一個輸入流InputStream
例如,利用hibernate取得一個文件,文件類型在實體類中為byte[]類型,
inputStream = new
ByteArrayInputStream(book.getMyfile);
其中inputStream 為全局變數,並且做setter和getter方法
(2),在控制器對應的action節點中(struts2配置文件中)添加一個result節點如下:
<result name="download" type="stream">
<param name="contentType">application/zip</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${myFileFileName}"</param>
<param name="bufferSize">1024</param>
</result>
這樣,就可以實現上傳和下載了.
④ struts2如何同時上傳文件以及獲得表單數據
事實上這根本不需要什麼其他配置操作,因為這是Struts2,而不是原生Servlet,在Struts2中,攔截器會將request中的表單數據(或者文件格式的數據)都和action類中的屬性名稱一一對應的注入值(包括文件數據)。所以你需要做的,其實只是在jsp頁面(或html)中加入一個file類型的input標簽,名稱記住(比如為photo),然後在action類中加一個File類型(java.io.File)欄位,此欄位必須和剛剛的input標簽name屬性一致,即photo(private File photo;)。最後,需要注意的是,當你妄圖從網頁上傳一個文件類型的表單時,必須將包圍它的form類將enctype="multipart/form-data" method="post"加上,即method必須為post,且enctype,也就是表單數據類型,必須為二進制的。
⑤ struts2中在action中怎麼對文件上傳進行處理
InputStream is = null;
OutputStream ops = null;
for (int i = 0; i < file.size(); i++) {
try {
TFile tfile = new TFile();
if (file.get(i) == null) {
continue;
}
is = new FileInputStream(file.get(i));
//路徑
String root = ServletActionContext.getRequest()
.getRealPath("/uploads");
// 根據系統時間取名字
int pos = this.getFileFileName().get(i).lastIndexOf(".");
String ext = this.getFileFileName().get(i).substring(pos);
// 獲得系統時間,產生文件名
long now = System.currentTimeMillis();
String nowtime = String.valueOf(now);
File destFile = new File(root + "/", nowtime + ext);
ops = new FileOutputStream(destFile);
byte[] b = new byte[400];
int length = 0;
while ((length = is.read(b)) > 0) {
ops.write(b, 0, length);
// ops.write(b); 這樣子同樣可行
}
tfile.setFileName(getFileFileName().get(i));
tfile.setFilePath("/uploads/" + nowtime + ext);
tfile.setFileCreatetime(currentDate);
tfile.setFileDataid(uptdt.getDataId());
fileservice.saveFile(tfile);// 保存上傳文件信息
} catch (Exception ex) {
ex.printStackTrace();
} finally {
is.close();
ops.close();
}
}
⑥ struts2中關於文件上傳的配置
MIME類型。text/plain表示文本類型
⑦ 使用struts2如何實現文件上傳
新建Web Project,在WebRoot下新建upload文件夾
在WebRoot下新建upload.jsp,上傳界面
編寫上傳成功、失敗的提示界面。
在WebRoot下新建uploadError.jsp
在WebRoot下新建uploadSuccess.jsp
編寫Action類
配置struts.xml文件,重置fileUpload攔截器。
測試,測試完成之後在tomcat下面webapps目錄下找到項目對應的文件夾下的upload下查看
⑧ struts2文件上傳有沒有最大限制
Struts2上傳文件的默認大小限制是2M(2097152位元組),也可以通過struts.properties文件中的struts.multipart.maxSize修改,如struts.multipart.maxSize=2048 表示一次上傳文件的總大小不能超過2K位元組。
struts2上傳非常方便了,沒聽說網上有很多上傳插件,上傳核心代碼在後台,看你怎麼獲取上傳的文件數據怎麼將數據再寫入到本地伺服器。
⑨ struts2 文件上傳怎麼指定保存文件的路徑和大小
在action配置文件struts.xml里設置(如下):
<package name="upload" extends="struts-default">
<action name="upload" class="">
<!--配置fieldUpload攔截器--->
<interceptor-ref name="fileUpoad">
<param name="allowedTypes">image/bmp,image/png,image/jpg,image/gif</param>
<param name="maximumSize">200000</param>
</interceptor-ref>
<!---必須顯示配置引用struts默認的攔截器棧:defaultStack----->
<interceptor name="defaultStack"></interceptor>
<!---設置上傳路徑----->
<param name="savePath">/upload</param>
<result name="success">/upload_succ.jsp</result>
<result name="input">/upload.jsp</result>
</action>
</package>
希望能幫到你哈....
⑩ struts2文件上傳中,如何限制上傳的文件類型
只需要在struts配置文件中配置就OK了
案例如下:
<package name="upload" extends="struts-default" namespace="/upload">
<!-- 配置 -->
<action name="upload" class="www.ijava.com.UploadAction" >
<param name="savePath">e:/images/</param>
<!--往fileuploadInterceptor 注入 -->
<interceptor-ref name="defaultStack">
<!-- 改變當前文件運行上傳的類型 -->
<param name="fileUpload.allowedTypes">image/jpeg,image/jpg</param>
<!-- 允許的文件後綴 -->
<param name="fileUpload.allowedExtensions">jpg,jpeg,gif</param>
</interceptor-ref>
<result>/index.jsp</result>
</action>