當前位置:首頁 » 文件管理 » struts2批量上傳

struts2批量上傳

發布時間: 2023-05-10 13:32:46

① Struts2.0中運用formfile怎樣實現圖片的批量上傳

不能做到,只能一次上傳多個,在form中添加多個file控制項,如果想實現一次選擇多個文件並批量上傳的話殲敬啟如,可以氏旁慎使用flash+javaScript來實現。

② plupload+struts批量文件上傳怎麼獲得文件數量

1.Java設置上傳文件的緩存目錄 2.獲取地址時,能夠讀到緩存路鬧畢戚徑下的文件,是緩存文件,不是源文件,那麼上傳時直液陵接用緩數鬧存文件就行了

③ 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,也就是表單數據類型,必須為二進制的。

④ jsp+struts2實現excel表格內容的批量導入

jap內羨纖嵌java代碼,java代雀消碼讀取內容,通過<%%>用java代碼操作內容,循環,每次循環都為jsp頁面中table添加一行。。。不過兄歲仿,如果信息多了的話,,,效率是個問題

⑤ 用Struts2.0+Spring2.0+hibernate3.1怎樣實現文件的上傳和下載

利用MultipartFile實現文件上傳
在java中上傳文件似乎總有點麻煩,沒.net那麼簡單,記得最開始的時候用smartUpload實現文件上傳,最近在工作中使用spring的MultipartFile實現文件上傳,感覺挺簡單,在這里和大家分享一下.
一.主要有兩個java類,和一般的servlet放在一起即可.
1.FileUploadBean.java
package chb.demo.web;

import org.springframework.web.multipart.MultipartFile;

/**
* @author chb
*
*/
public class FileUploadBean {

private MultipartFile file;

public void setFile(MultipartFile file) {
this.file = file;
}

public MultipartFile getFile() {
return file;
}
}
2.FileUploadController.java
package chb.demo.web;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

/**
* @author chb
*
*/
public class FileUploadController extends SimpleFormController {

protected ModelAndView onSubmit(
HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors){

try
{
// cast the bean
FileUploadBean bean = (FileUploadBean) command;

// let's see if there's content there
MultipartFile file = bean.getFile();

if (file == null) {
throw new Exception("上傳失敗:文件為�空");
}
if(file.getSize()>10000000)
{
throw new Exception("上傳失敗:文件大小不能超過10M");
}
//得到文件�名
String filename=file.getOriginalFilename();

if(file.getSize()>0){
try {
SaveFileFromInputStream(file.getInputStream(),"D:/",filename);
} catch (IOException e) {
System.out.println(e.getMessage());
return null;
}
}
else{
throw new Exception("上傳失敗:上傳文件不能為�空");
}
// well, let's do nothing with the bean for now and return:
try {
return super.onSubmit(request, response, command, errors);

} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return null;
}
}

/**保存文件
* @param stream
* @param path
* @param filename
* @throws IOException
*/
public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ filename);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
}
}

二.配置文件中如下配置:
1.web.xml,利用spring mvc模式,大家應該都很熟悉了
<servlet>
<servlet-name>chb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>chb</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.chb-servlet.xml,這里要配置映射,並可以設定最大可上傳文件的大小
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Multi-Action 用來標識method的變數名定義-->
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName">
<value>action</value>
</property>
<property name="defaultMethodName">
<value>index</value>
</property>
</bean>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="10000000"/>
</bean>

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/upload.do">fileUploadController</prop>
</props>
</property>
</bean>

<bean id="fileUploadController" class="chb.demo.web.FileUploadController">
<property name="commandClass" value="chb.demo.web.FileUploadBean"/>
<!-- 上傳失敗時跳轉頁面 -->
<property name="formView" value="/user/err.jsp"/>
<!-- 上傳成功時跳轉頁面 -->
<property name="successView" value="/user/confirmation.jsp"/>
</bean>
</beans>
三.設定jsp頁面
<form id="form1" method="post" action="upload.do" enctype="multipart/form-data">
<tr>
<td width="25%" align="right">上傳文件:</td>
<td><input id="file" type="file" NAME="file" style="width:300px;"></td>
</tr>
<tr align="center" valign="middle">
<td height="60" colspan="2"><input type="submit" ID="BtnOK" value="確認上傳"></td>
</tr>
</form>
ok,現在就可以上傳文件了,挺簡單吧?這里我只列出了基本步驟,至於具體的操作(比如中文問題)可能就需要大家自己再完善完善了.

⑥ hibernate+struts 批量上傳圖片上傳,怎麼做。要插件嗎圖片保存在資料庫中還是項目中。

圖片不是保納鉛和存到數據激岩中,在struts.xml文洞盯件里加個<constant name="struts.multipart.maxSize" value="100000000" />

⑦ 我用struts2做的上傳文件功能,但當文件超過2G時頁面出現錯誤,這個有什麼辦法解決么

struts配置文件里有個上傳大小的常量可以配
可以配置default.properties文件,也可以直接配xml常量
常量名是struts.multipart.maxSize
值的話你自己換算就好了 1K*1024*1024什麼什麼的自己乘完放到value里

⑧ 誰能說說java批量上傳文件的原理,並且給個例子吧 謝了

直接用struts2的就行了,批量也不要想的太復雜,就是後台定義成List<File> uploadFile;頁面就是<input type="file" name="uploadFile(這里要和你action方法里定義的那個List<File> uploadFile這個屬性名一樣)"/>,最後後台action方法 里的話就加一個for循環uploadFile就好了。具體struts2的上傳去網路搜了,例子太多,記的加分。

⑨ 淺談怎麼使用swfupload工具及其與struts2無縫相接

一、准備工作
從官網上下載發布版v2.2.0.1,僅取下載文件中的SWFUpload.js和swfupload.swf即可,另外可利用官網上的DEMO,從中獲取一張PNG圖片。

swfupload.swf是上傳組件的核心,一個特製的FLASH,具有瀏覽文件,上傳文件的功能,以按鈕形式體現在用戶圓態旅眼前,上文中提及的PNG圖片浮在按鈕上,可增強視覺效果。SWFUpload.js與swfupload.swf交互,向開發者提供操作介面。

二、使用步驟

文檔中指出,SWFUpload並不是拖放式的上傳控制項,它需要使用者具備JavaScript(以下簡稱JS)和DOM的知識,進行UI界面的設計。

點擊「選擇文件」按鈕,文件對話框即刻跳出,用戶選擇多個文件後,對話框立即關閉,選擇的文件進入排隊序列,等待上傳。當調用SWFUpload 對象的startUpload方法執行上傳命令。在此例中,swfu已經實例化為SWFUpload 對象,故可以在JSP中添加一個按鈕,在其點擊事件中調其該方法。在JSP中添加代碼:

<button onclick="swfu.startUpload()">上傳</button>

雖如此,但文件沒有上傳到伺服器上,至少客戶端不知道上傳的目的地。

3.指定客戶端將上傳信息發送至伺服器的URL——struts2登場

swfupload將upload_url屬性值作為客戶端將文件上傳請求信息發送至伺服器的URL,讀者可理解為struts2表單中的action屬性值,upload_url屬性值默認為web項目的主頁。筆者僅介紹struts2如何接收請求。

struts2已經實現了上傳功能,筆者不作詳細介紹(由於struts2實現了無縫整合,開發者僅需要將上傳的臨時進行復制即可,其使用方法易於掌握)。

使用struts2的上傳功能,開發者需要知道file標簽的name屬性值,在此基礎上,編寫action類即可,並在struts.xml文件中配置名字其名字。在swfupload中,file標簽的name屬性等價為file_post_name屬性,其默認值為Filedata。至此,具備了URL和name屬性值,便可開始struts2整合之旅。

首先將action的名字賦值給 swfupload中upload_url屬性。接著編寫自己的action類,類中包含兩個屬性Filedata和Filename,Filedata和file_post_name值相同(文檔推薦使用默認值Filedata)。 Filedata指向了struts2上傳的臨時文件路徑(action中的execute函數執行完畢,臨時文件將被刪除),Filename為上傳文件的名字。Execute函數實現將臨時文件復制到指定的目錄(此閉畢例將它放在WEB項目下bin目錄下的upload中)。此例action的名字為「upload」,在JSP中將upload_url屬性賦值為upload。
4.添加捕獲事件函數
swfupload僅實現了後台操作,前台的處理空間留給了開發者,它採用事件觸發機制,讓開發者捕獲特定事件,並鼓勵開發者自定義對應的事件處理函數(筆者定義為:捕獲事件函數)進行相應處理。即當swfupload內部某一特定事件發生,便觸發JS函數,JS函數通過回調機制將函數參數繼續傳入自定義的JS函數中。Swfupload通過固定的事件函數名屬性橘凳值尋找自定義的JS函數,所以在初始化工作中,將自定義的JS函數名賦值給swfupload指定的對應屬性即可。
比如,當你選擇上傳文件後,文件對話框隨即關閉,產生關閉對話框完成的事件,內置的fileDialogComplete函數被觸發,函數執行完必要的操作後,將整個參數信息傳入file_dialog_complete_handler屬性值對應的JS函數。所以,開發者僅需將自定義的JS函數名賦值給file_dialog_complete_handler屬性即可。Swfupload向外提供的所有事件以及對應的函數定義,文檔有詳細說明。筆者將「添加捕獲XXX事件函數」定義為:自定義JS函數用來捕捉XXX事件,XXX表示swfupload內部捕獲事件函數,並函數名賦值給XXX事件對應的屬性。比如「添加捕獲fileDialogComplete事件函數」表示先自定義JS函數(假設函數名為fileDialogCompleteHandler),用來捕獲fileDialogComplete事件,並且將fileDialogCompleteHandler賦值給fileDialogComplete事件對應的屬性file_dialog_complete_handler。
為便於管理,筆者建議新建一個JS文件,專門用來存放捕獲事件函數,此例為handler.js,注意在JSP中要將其引入。
<script type="text/javascript" src="handler.js"></script>
5.實現批量上傳
swfupload不自動批量上傳,讀者可以嘗試選擇兩個文件點擊上傳按鈕,在伺服器端卻僅有一個文件,當再次點擊上傳按鈕後,伺服器端又多出一個文件。Swfupload雖支持批量上傳,但本質仍是單個文件依次上傳,這有別於傳統設計模式,但其益處卻避免了開發者編寫大量代碼,迭代分析所選文件。
文檔指出,添加捕獲uploadComplete事件函數(其對應屬性為upload_complete_handler),並在其中調用上傳函數startUpload,通過遞歸的方式實現批量上傳,即在某個文件上傳完成後,再次啟動文件上傳。此例,該函數被定義為uploadComplete。

在JSP中添加upload_complete_handler屬性並賦值為uploadComplete。
6.顯示上傳文件列表
顯示出上傳文件列表能夠增強用戶體驗,因為用戶將看見選擇的文件信息。下文介紹將選擇的文件以表格形式顯示出來,每行內容為依次為文件名、大小、狀態(QUEUED、ERROR、COMPLETE)。
讀者不妨在文檔中仔細查找是否存在其參數包含file類型集合的API函數,其結果必然徒勞,因為只有參數為file類型的API函數。這在上文已有介紹:swfupload本質依靠單個文件形式上傳。該知識點對於對於靈活掌握swfupload舉足輕重。故當選擇某一文件後,在表格追加顯示該文件信息,在文件對話框關閉後,顯示表格(表格初始狀態為隱藏,在JSP中定義)。


三、從頁面跳轉到請求流程
此時,本應劃上句號,因為所選文件已經上傳到upload目錄下,但筆者還是想就部分朋友反映「上傳完成後,頁面不跳轉」現象談談個人觀點。頁面不跳轉是一個不爭的事實,你大可反復嘗試。難道這意味著struts2頁面跳轉功能失效呢?筆者在沒搞清楚swfupload原理前,也為之困擾。struts2頁面跳轉功能仍然良好地在運轉,不過它將跳轉的頁面回響至swfupload,swfupload用內置函數uploadSuccess捕獲。對此,理解用戶從訪問上傳頁面到頁面跳轉的整個請求過程至關重要。
首先瀏覽器訪問WEB伺服器,打開上傳頁面,這個過程和打開網頁原理相同。當點擊「選擇文件」按鈕後,瀏覽器通過JS啟用swfupload後退出舞台,flash登場。當點擊「上傳」按鈕,flash模擬瀏覽器向WEB伺服器發起連接(新開session),向WEB伺服器發送上傳信息。可見,當WEB伺服器返回信息,目的地不是瀏覽器,而是flash。整個過程,flash始終和JS緊密交融,將發生的事件通知JS,給開發者留下了足夠的編程空間。這不得不贊嘆swfupload,將flash設計得淋漓盡致,將JS、WEB伺服器、瀏覽器天衣無縫融入一體。

當WEB伺服器響應代碼為200時(swfupload表示上傳成功的默認代碼,可通過修改http_success屬性值改變),swfupload便產生上傳成功事件,故可通過添加捕獲上傳成功事件函數得到struts2返回的頁面,但不可通過uploadError事件處理struts2攔截器拋出的異常信息,因為swfupload無法解析WEB伺服器返回的信息,它僅靠WEB伺服器返回代碼產生相應事件。
上傳成功事件對應的內置函數為uploadSuccess(file object, server data, received response),其中第一個參數為上傳的文件,第二個參數為伺服器返回的數據,第三個參數為布爾值,從字面上看,估計表示是否收到信息。struts2跳轉的頁面以HTML代碼形式賦值給第二個參數,故可在該捕獲事件函數中,置入document.write(server_data)語句,實現頁面跳轉。
筆者認為swfupload並不希望開發者這樣做,因為單個文件的上傳機制將導致出現上傳完一個文件頁面就跳轉一次的荒唐現象。其實,只要任何時候調用document.write方法,swfupload立即失效,切忌這樣做。
對於實現批量上傳成功頁面跳轉的方法,筆者建議可將server_data緩存,在捕獲uploadSuccess事件函數中,如果上傳隊列為空(getStats().files_queued > 0),再用document.write向swfupload say Goodbye。

⑩ struts2批量上傳文件提示以下異常

struts.multipart.saveDir沒有配置。
struts.multipart.saveDir用於指定存放臨時文件的文件夾
於是在,struts.xml配置文件中增加如下:
<constant
name="struts.multipart.saveDir"
value="/tmp"/>
設置臨時文件上傳路徑。

熱點內容
ftp影響數據交換 發布:2025-02-12 21:27:18 瀏覽:386
編譯原理與實現pdf 發布:2025-02-12 21:27:14 瀏覽:41
比格雲伺服器好用不 發布:2025-02-12 21:23:00 瀏覽:219
砍價php 發布:2025-02-12 21:21:17 瀏覽:755
c語言函數返回值是數組 發布:2025-02-12 21:21:16 瀏覽:699
pow在c語言中什麼 發布:2025-02-12 21:07:24 瀏覽:321
php查詢mysql連接 發布:2025-02-12 21:05:45 瀏覽:633
linuxc當前時間 發布:2025-02-12 21:03:32 瀏覽:28
雲鎖神伺服器 發布:2025-02-12 21:03:29 瀏覽:487
c語言int和float 發布:2025-02-12 21:03:24 瀏覽:21