struts 表單包含文件和參數(shù) Struts文件上傳表單
在開發(fā)Web應(yīng)用程序時(shí),經(jīng)常會遇到需要上傳文件和參數(shù)的情況。而在Struts框架中,通過一些簡單的設(shè)置和代碼,我們可以輕松地實(shí)現(xiàn)這個(gè)功能。 首先,我們需要在Struts的配置文件中進(jìn)行相應(yīng)的配置。在
在開發(fā)Web應(yīng)用程序時(shí),經(jīng)常會遇到需要上傳文件和參數(shù)的情況。而在Struts框架中,通過一些簡單的設(shè)置和代碼,我們可以輕松地實(shí)現(xiàn)這個(gè)功能。
首先,我們需要在Struts的配置文件中進(jìn)行相應(yīng)的配置。在struts.xml文件中,添加一個(gè)新的action配置,指定該action對應(yīng)的處理方法和頁面路徑:
lt;action name"upload" class"com.example.UploadAction" method"execute"gt;
lt;result name"success"gt;/success.jsplt;/resultgt;
lt;result name"error"gt;/error.jsplt;/resultgt;
lt;/actiongt;
接著,在UploadAction類中,編寫處理上傳文件和參數(shù)的方法:
public class UploadAction extends ActionSupport {
private File uploadFile;
private String uploadFileFileName;
private String name;
// getter and setter methods
public String execute() throws Exception {
// 通過uploadFile和uploadFileFileName獲取上傳的文件信息
// 通過name獲取參數(shù)值
return SUCCESS;
}
}
在JSP頁面中,我們需要編寫一個(gè)表單,包含文件和參數(shù)輸入框:
lt;s:form action"upload" method"post" enctype"multipart/form-data"gt;
lt;s:file name"uploadFile" label"選擇文件" /gt;
lt;s:textfield name"name" label"參數(shù)" /gt;
lt;s:submit value"提交" /gt;
lt;/s:formgt;
在以上代碼中,我們使用了Struts標(biāo)簽庫(struts-tags)提供的
在執(zhí)行上傳操作時(shí),提交的表單數(shù)據(jù)將會被傳遞到UploadAction類的execute方法中。我們可以通過uploadFile和uploadFileFileName屬性獲取上傳的文件信息,通過name屬性獲取參數(shù)值。
在處理上傳文件時(shí),我們可以利用Apache Commons FileUpload組件提供的功能來實(shí)現(xiàn)。示例代碼如下:
public String execute() throws Exception {
String filePath "/upload/"; // 文件保存路徑
// 創(chuàng)建一個(gè)DiskFileItemFactory對象,用于處理上傳的文件
DiskFileItemFactory factory new DiskFileItemFactory();
// 設(shè)置內(nèi)存臨界值,超過后將產(chǎn)生臨時(shí)文件并存儲于臨時(shí)目錄中
(1024 * 1024);
// 設(shè)置臨時(shí)存儲目錄
(new File(("")));
// 創(chuàng)建一個(gè)ServletFileUpload對象
ServletFileUpload upload new ServletFileUpload(factory);
// 設(shè)置文件上傳限制
(1024 * 1024 * 10); // 單個(gè)文件最大大小為10M
(1024 * 1024 * 50); // 總文件最大大小為50M
try {
// 解析請求的內(nèi)容提取文件數(shù)據(jù)
List fileItems (request);
// 處理每個(gè)上傳的文件
for (FileItem item : fileItems) {
// 如果是普通表單字段
if (()) {
// 處理普通表單字段
String fieldName ();
String fieldValue ("UTF-8");
// ...
} else {
// 如果是上傳的文件
String fileName ();
String contentType ();
// ...
}
}
return SUCCESS;
} catch (Exception e) {
();
return ERROR;
}
}
在以上代碼中,我們首先設(shè)置了文件保存路徑、內(nèi)存臨界值和臨時(shí)存儲目錄等參數(shù)。然后,通過解析請求的內(nèi)容提取文件數(shù)據(jù),可以通過isFormField方法判斷字段類型,如果是普通表單字段,則使用getFieldName和getString方法獲取字段名和字段值;如果是上傳的文件,則使用getName和getContentType方法獲取文件名和文件類型。
通過以上步驟,我們就完成了Struts框架下表單同時(shí)上傳文件和參數(shù)的詳細(xì)使用方法。希望本文對您有所幫助!