A. 我用struts2做的上傳文件功能,但當文件超過2G時頁面出現錯誤,這個有什麼辦法解決么
struts配置文件里有來個上傳大自小的常量可以配
可以配置default.properties文件,也可以直接配xml常量
常量名是struts.multipart.maxSize
值的話你自己換算就好了 1K*1024*1024什麼什麼的自己乘完放到value里
B. 用Struts2.0+Spring2.0+hibernate3.1怎樣實現文件的上傳和下載
apache上common項目中有fileUpload這個組件,希望對你有用
C. jsp 文件上傳和下載
1.jsp頁面
<s:form action="fileAction" namespace="/file" method="POST" enctype="multipart/form-data">
<!-- name為後台對應的參數名稱 -->
<s:file name="files" label="file1"></s:file>
<s:file name="files" label="file2"></s:file>
<s:file name="files" label="file3"></s:file>
<s:submit value="提交" id="submitBut"></s:submit>
</s:form>
2.Action
//單個文件上傳可以用 File files,String filesFileName,String filesContentType
//名稱要與jsp中的name相同(三個變數都要生成get,set)
private File[] files;
// 要以File[]變數名開頭
private String[] filesFileName;
// 要以File[]變數名開頭
private String[] filesContentType;
private ServletContext servletContext;
//Action調用的上傳文件方法
public String execute() {
ServletContext servletContext = ServletActionContext.getServletContext();
String dataDir = servletContext.getRealPath("磨脊塵/file/upload");
System.out.println(dataDir);
for (int i = 0; i < files.length; i++) {
File saveFile = new File(dataDir, filesFileName[i]);
files[i].renameTo(saveFile);
}
return "success";
}
3.配置上傳文件臨時文件夾(在struts.xml中配置)
<constant name="struts.multipart.saveDir" value="c:/temp"/>
文件下載
1.下載的url(到Action)
<a href="${pageContext.request.contextPath}/file/fileAction!down.action">下載</a>
2.struts.xml配置
<package name="file" namespace="野神/file" extends="struts-default">
<action name="fileAction" class="com.struts2.file.FileAction">
<!-- 下載文件配置 -->
<!--type 為 stream 應用 StreamResult 處理-->
<result name="down" type="stream">
<!--
不管實際類型,待下載文件 ContentType 統一指定為 application/octet-stream
默認為 text/plain
-->
<param name="contentType">application/octet-stream</param>
<!--
默認就是 inputStream,它將會指示 StreamResult 通過 inputName 屬性值的 getter 方法,
比如這里就是 getInputStream() 來獲取下載文件的內容,意味著瞎禪你的 Action 要有這個方法
-->
<param name="inputName">inputStream</param>
<!--
默認為 inline(在線打開),設置為 attachment 將會告訴瀏覽器下載該文件,filename 指定下載文
件保有存時的文件名,若未指定將會是以瀏覽的頁面名作為文件名,如以 download.action 作為文件名,
這里使用的是動態文件名,${fileName}, 它將通過 Action 的 getFileName() 獲得文件名
-->
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<!-- 輸出時緩沖區的大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
</package>
3.Action
//Action調用的下載文件方法
public String down() {
return "down";
}
//獲得下載文件的內容,可以直接讀入一個物理文件或從資料庫中獲取內容
public InputStream getInputStream() throws Exception {
String dir = servletContext.getRealPath("/file/upload");
File file = new File(dir, "icon.png");
if (file.exists()) {
//下載文件
return new FileInputStream(file);
//和 Servlet 中不一樣,這里我們不需對輸出的中文轉碼為 ISO8859-1
//將內容(Struts2 文件下載測試)直接寫入文件,下載的文件名必須是文本(txt)類型
//return new ByteArrayInputStream("Struts2 文件下載測試".getBytes());
}
return null;
}
// 對於配置中的 ${fileName}, 獲得下載保存時的文件名
public String getFileName() {
String fileName ="圖標.png";
try {
// 中文文件名也是需要轉碼為 ISO8859-1,否則亂碼
return new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
return "icon.png";
}
}
D. 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,也就是表單數據類型,必須為二進制的。
E. 我用struts2做文件上傳,傳到伺服器的始終是tmp臨時文件,我想要真正的文件,請怎麼解決
struts只能幫你上傳成文件流,你的action有個file吧,要想生成真正地文件,還得把File裝換成FileOutputStream,然後輸出到你真正的文件
F. java Struts2實現文件的下載,彈出下載框時默認文件名字總是我的action名,無法讀取配置
name 要變成全局變數 要有set的方法 這樣配置知道 怎麼拿值。
G. struts2上傳文件,第一次上傳成功,第二次上傳失敗
你這個問題後來是怎麼解決的啊?
H. 怎麼使用struts2,jar包已下載下來,怎麼導入到哪裡
我用的是struts2.2.1.1-all.zip(不管用struts2的哪個版本,道理都一樣,找對應的包就行了)
例如你建一Web Project,名為Struts2
導入項目所需要的jar包,放入/Struts2/WebRoot/WEB-INF/lib下面
方法一:
在struts2存放目錄(以我的舉例說明)
F:\JavaWeb教程\ssh-jar\struts-2.2.1.1-all\struts-2.2.1.1\lib下面找到以下包
commons-fileupload-1.2.1.jar//文件上傳時用的,為了以後用到,最好加入
commons-io-1.3.2.jar//同上
commons-logging-1.0.4.jar
freemarker-2.3.16.jar
javassist-3.7.ga.jar
ognl-3.0.jar
struts2-core-2.2.1.1.jar
xwork-core-2.2.1.1.jar
共8個包,將其復制到/Struts2/WebRoot/WEB-INF/lib下面
方法二:(不用復制,導入法)
(1).右擊項目名稱Struts2-->Build Path-->Configure Build Path...-->打開一對話框
(2).選擇左邊的"Java Build Path"選項-->選擇Libraries選項卡-->Add External JARs-->去尋找
F:\JavaWeb教程\ssh-jar\struts-2.2.1.1-all\struts-2.2.1.1\lib下面的指定的jar包導入即可
I. 請問struts2能實現上百兆的視頻的上傳和下載嗎如果可以,怎麼配置 看到您以前提問過這個問題能說下嗎
可以,只要常量則祥碼配對了就可以。
不過這種大文件,一般孫哪在內網可以,要是在外宴配網的話還是不要提供這種功能了
J. struts2批量上傳文件提示以下異常
struts.multipart.saveDir沒有配置。
struts.multipart.saveDir用於指定存放臨時文件的文件夾,
於是在,struts.xml配置文件中增加如下:
<constant
name="struts.multipart.saveDir"
value="/tmp"/>
設置臨時文件上傳路徑。