1. 程式人生 > >Struts2多檔案上傳錯誤解決

Struts2多檔案上傳錯誤解決

   用Struts2實現的檔案上傳的時候,報出錯誤the request was rejected because its size (3141420) exceeds the configured maximum (2097152)。這是因為上傳的檔案太大,這時需要在struts.xml中加入一個攔截器,設定上傳檔案的最大值。

   <action name="upload2" class="com.seven.upload.UploadAction2">
	 <interceptor-ref name="fileUpload">
           <param name="maximumSize">52428800</param>
         </interceptor-ref>
         <interceptor-ref name="defaultStack"></interceptor-ref>
         
         <result>/success.jsp</result>
         <result name="input">/index2.jsp</result>
      </action>

攔截器name屬性為fileUpload, 引數名為maximumSize,這裡引數值為52428800,表示5M。注:1024*1024=1M。在fileUpload後面再加上預設的攔截器,確保引數能夠都提交到Action。其實也可以在struts.xml中配置<constant name="struts.multipart.maxSize" value="55000000"/>

struts.multipart.maxSize掌控整個專案所上傳檔案的最大的Size
struts.multipart.maxSize和fileUpload攔截器的maximumSize屬性分工不同,總結如下:
1.struts.multipart.maxSize掌控整個專案所上傳檔案的最大的Size。超過了這個size,後臺報錯,程式處理不了如此大的檔案。fielderror裡面會有如下的提示:
the request was rejected because its size (16272982) exceeds the configured maximum (9000000)
2.fileUpload攔截器的maximumSize屬性必須小於struts.multipart.maxSize的值。
struts.multipart.maxSize預設2M,當maximumSize大於2M時,必須設定struts.multipart.maxSize的值大於maximumSize。
3.當上傳的檔案大於struts.multipart.maxSize時,系統報錯
當上傳的檔案在struts.multipart.maxSize和maximumSize之間時,系統提示:
File too large: file "MSF的概念.ppt" "upload__5133e516_129ce85285f__7ffa_00000005.tmp" 6007104 
當上傳的檔案小於maximumSize,上傳成功。

下面是Action中的程式碼

package com.seven.upload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;

import org.apache.commons.io.IOUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 多個檔案上傳
 * @author Administrator
 * 
 */
public class UploadAction2 extends ActionSupport {
	private List<File> ppt;// 上傳的檔案域的屬性
	private List<String> pptFileName;// 上傳的檔名稱
	private List<String> pptContentType;// 上傳的檔案型別

	public List<File> getPpt() {
		return ppt;
	}

	public void setPpt(List<File> ppt) {
		this.ppt = ppt;
	}

	public List<String> getPptFileName() {
		return pptFileName;
	}

	public void setPptFileName(List<String> pptFileName) {
		this.pptFileName = pptFileName;
	}

	public List<String> getPptContentType() {
		return pptContentType;
	}

	public void setPptContentType(List<String> pptContentType) {
		this.pptContentType = pptContentType;
	}

	public String execute() throws Exception {
        System.out.println(ppt);
        System.out.println(pptContentType);
        System.out.println(pptFileName);
       
        //迴圈遍歷每個上傳的檔案
        for (int i = 0; i < ppt.size(); i++) {
        	String dirs = ServletActionContext.getServletContext().
        			getRealPath("/files/"+pptFileName.get(i));
        	
        	System.out.println(dirs);
        	
        	FileInputStream in=new FileInputStream(ppt.get(i));
        	FileOutputStream out=new FileOutputStream(dirs);
		    IOUtils.copy(in, out);
        
        }
        
		return super.execute();
	}

	public String input() {
		return INPUT;
	}

}
這裡成員變數都用了List來接受,為了接受多個傳遞過來的檔案。

相關推薦

Struts2檔案錯誤解決

   用Struts2實現的檔案上傳的時候,報出錯誤the request was rejected because its size (3141420) exceeds the configured

第30講 .struts2檔案

1在專案中,HeadFirstStruts2chapter08,新建filesUpload.jsp檔案 <%@ page language="java" contentType="text/html; charset=UTF-8"   &nbs

java struts2 檔案 加進度條

摘要   實現批量上傳,同時又進度顯示和上傳速度 1、struts.xml檔案配置 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN

struts2檔案

相比單檔案上傳,多檔案上傳只需要在private各種屬性的時候,定義成陣列然後在上傳的時候使用迴圈來迴圈上傳package com.rl.action; import java.io.File; import java.io.FileInputStream; import

Struts2配合layui檔案--下載

先說上傳: 前臺上傳檔案的js程式碼: var demoListView = $('#demoList') ,uploadListIns = upload.render({ elem: '#testList' ,url: 'emailAction_upload'

Thinkphp5 檔案重名的解決辦法

前天晚上,專案上線前測出了一個bug,上傳多張圖片在線上出現同名的情況,上傳了五張不一樣的圖片,實際上只上了兩張(甚至有時候一張),並且資料庫的欄位都出現了同名的情況,線上下好好的,線上就不行了…… 由於tp5上傳圖片使用的是date的命名規則,所以在同一時間段或者程式碼的位置原因(個

Struts2 實現檔案

前臺form 表單:設定method=post,enctype=multipart/form-data。 struts2在原有的上傳解析器繼承上做了進一步封裝,更進一步簡化了檔案上傳。 Action需要使用3個屬性來封裝該檔案域的資訊: (1)型別為Fil

[原創]K8 Struts2 Exp 20170310 S2-045(Struts2綜合漏洞利用工具) [原創]Struts2奇葩環境任意檔案工具(解決菜刀無法檔案亂碼等問題)

工具: K8 Struts2 Exploit組織: K8搞基大隊[K8team]作者: K8拉登哥哥部落格: http://qqhack8.blog.163.com釋出: 2014/7/31 10:24:56簡介: K8 Stru

[原創]Struts2奇葩環境任意檔案工具(解決菜刀無法檔案亂碼等問題)

 上面這問題問得好  1 不知道大家有沒碰到有些Strus2站點  上傳JSP後訪問404 或者503    注意我說的是404或503不是403(要是403換個css/img等目錄或許可以)    但對於明明

struts2進行檔案

首先搭建好struts2的開發環境,匯入struts2需要的最少jar包 新建upload.jsp頁面,注意一定要把表單的enctype設定成multipart/form-data <%@ page language="java" import="java.util

ajaxFileUpload+struts2實現檔案(動態新增檔案框)

但只是固定的檔案個數,如果需求不確定是多少檔案 則我們就需要動態的新增檔案上傳框,以實現靈活性。基於上篇基本框架是不變的,主要修改以下幾個方面1、jQuery實現動態新增刪除檔案上傳框2、獲取檔案上傳框

struts2.x檔案(使用註解)

一般網站都會提供檔案的上傳與下載的功能,尤其是資料管理型網站。剛好在工作中需要用到,就提前學習了一下,並建了一個maven工程做練習。 1.      本工程使用maven建立工程,是為了省去包匯入細節,其中maven工程的pom.xml檔案主要如下: <!--

Struts2實現檔案功能

前臺form 表單:設定method=post,enctype=multipart/form-data。struts2在原有的上傳解析器繼承上做了進一步封裝,更進一步簡化了檔案上傳。Action需要使用3個屬性來封裝該檔案域的資訊:(1)型別為File的*屬性封裝了該檔案域對應的檔案內容; (2)型別為Str

Struts2檔案(單檔案/檔案)

<一>簡述: Struts2的檔案上傳其實也是通過攔截器來實現的,只是該攔截器定義為預設攔截器了,所以不用自己去手工配置,<interceptor name="fileUpload" class="org.apache.struts2.intercepto

Struts2實現單檔案,檔案與下載(十)

    “兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均是採用實用主義,從專案和程式碼的角度去分析。由於本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。特別感謝"java12

ajaxFileUpload+struts2實現檔案

以前有介紹過ajaxFileUpload實現檔案上傳,但那是單檔案的,這次介紹多檔案上傳。單檔案和多檔案的實現區別主要修改兩點,一是外掛ajaxfileupload.js裡接收file檔案ID的方式二是後臺action是陣列形式接收2、引入jquery-1.8.0.min.j

Spring整合Struts2實現檔案及下載

Sping與Struts環境的搭建在前文已經講述過了,再次就不再做過多介紹了,詳情請參考前文《Spring整合Struts2中攔截鏈與註解的使用 》。接下來進入正題,Struts2的多檔案上傳步驟。本文仍然沿用Spring框架對Struts2框架進行管理,首先來看web.x

HttpClient檔案程式碼及普通引數中文亂碼問題解決

該隨筆記錄了在實際專案中使用HttpClient呼叫外部api,需上傳檔案和普通引數的程式碼。 筆者在使用 HttpClient 呼叫 http api 介面時,需要服務端上傳檔案和一些普通引數給 http api,如果使用 Java 自帶的 HttpURLConnection 請求的話,傳送 multip

struts2實現檔案與下載功能

一、Demo介紹 基於struts2框架,實現多檔案的上傳和下載功能。 實現原理圖: 部分介面圖: 上傳成功及下載頁面: 二、主要程式碼 uploadFile.jsp:在form表單中包含一個文字框(上傳使用者的姓名)和兩個檔案上傳選項. <%@