日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2之单个文件上传(特别推荐)

發布時間:2024/9/27 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2之单个文件上传(特别推荐) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過2種方式模擬單個文件上傳,效果如下所示

開發步驟如下:

1、新建一個web工程,導入struts2上傳文件所需jar,如下圖

目錄結構

????????????

2、新建Action

第一種方式

package com.ljq.action;import java.io.File;import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial") public class UploadAction extends ActionSupport{private File image; //上傳的文件 private String imageFileName; //文件名稱 private String imageContentType; //文件類型 public String execute() throws Exception {String realpath = ServletActionContext.getServletContext().getRealPath("/images");//D:\apache-tomcat-6.0.18\webapps\struts2_upload\images System.out.println("realpath: "+realpath);if (image != null) {File savefile = new File(new File(realpath), imageFileName);if (!savefile.getParentFile().exists())savefile.getParentFile().mkdirs();FileUtils.copyFile(image, savefile);ActionContext.getContext().put("message", "文件上傳成功");}return "success";}public File getImage() {return image;}public void setImage(File image) {this.image = image;}public String getImageFileName() {return imageFileName;}public void setImageFileName(String imageFileName) {this.imageFileName = imageFileName;}public String getImageContentType() {return imageContentType;}public void setImageContentType(String imageContentType) {this.imageContentType = imageContentType;}}

????????????

第二種方式

package com.ljq.action;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial") public class UploadAction2 extends ActionSupport {// 封裝上傳文件域的屬性 private File image;// 封裝上傳文件類型的屬性 private String imageContentType;// 封裝上傳文件名的屬性 private String imageFileName;// 接受依賴注入的屬性 private String savePath;@Overridepublic String execute() {FileOutputStream fos = null;FileInputStream fis = null;try {// 建立文件輸出流 System.out.println(getSavePath());fos = new FileOutputStream(getSavePath() + "\\" + getImageFileName());// 建立文件上傳流 fis = new FileInputStream(getImage());byte[] buffer = new byte[1024];int len = 0;while ((len = fis.read(buffer)) > 0) {fos.write(buffer, 0, len);}} catch (Exception e) {System.out.println("文件上傳失敗");e.printStackTrace();} finally {close(fos, fis);}return SUCCESS;}/*** 返回上傳文件的保存位置* * @return*/public String getSavePath() throws Exception{return ServletActionContext.getServletContext().getRealPath(savePath); }public void setSavePath(String savePath) {this.savePath = savePath;}public File getImage() {return image;}public void setImage(File image) {this.image = image;}public String getImageContentType() {return imageContentType;}public void setImageContentType(String imageContentType) {this.imageContentType = imageContentType;}public String getImageFileName() {return imageFileName;}public void setImageFileName(String imageFileName) {this.imageFileName = imageFileName;}private void close(FileOutputStream fos, FileInputStream fis) {if (fis != null) {try {fis.close();} catch (IOException e) {System.out.println("FileInputStream關閉失敗");e.printStackTrace();}}if (fos != null) {try {fos.close();} catch (IOException e) {System.out.println("FileOutputStream關閉失敗");e.printStackTrace();}}}}

??????????????

struts.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- 該屬性指定需要Struts2處理的請求后綴,該屬性的默認值是action,即所有匹配*.action的請求都由Struts2處理。如果用戶需要指定多個請求后綴,則多個后綴之間以英文逗號(,)隔開。 --><constant name="struts.action.extension" value="do" /><!-- 設置瀏覽器是否緩存靜態內容,默認值為true(生產環境下使用),開發階段最好關閉 --><constant name="struts.serve.static.browserCache" value="false" /><!-- 當struts的配置文件修改后,系統是否自動重新加載該文件,默認值為false(生產環境下使用),開發階段最好打開 --><constant name="struts.configuration.xml.reload" value="true" /><!-- 開發模式下使用,這樣可以打印出更詳細的錯誤信息 --><constant name="struts.devMode" value="true" /><!-- 默認的視圖主題 --><constant name="struts.ui.theme" value="simple" /><!--<constant name="struts.objectFactory" value="spring" />--><!--解決亂碼 --><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 指定允許上傳的文件最大字節數。默認值是2097152(2M) --><constant name="struts.multipart.maxSize" value="10701096"/><!-- 設置上傳文件的臨時文件夾,默認使用javax.servlet.context.tempdir --><constant name="struts.multipart.saveDir " value="d:/tmp" /><package name="upload" namespace="/upload" extends="struts-default"><action name="*_upload" class="com.ljq.action.UploadAction" method="{1}"><result name="success">/WEB-INF/page/message.jsp</result></action></package><package name="upload2" extends="struts-default"><action name="upload2" class="com.ljq.action.UploadAction2" method="execute"><!-- 動態設置savePath的屬性值 --><param name="savePath">/images</param><result name="success">/WEB-INF/page/message.jsp</result><result name="input">/upload/upload.jsp</result><interceptor-ref name="fileUpload"><!-- 文件過濾 --><param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param><!-- 文件大小, 以字節為單位 --><param name="maximumSize">1025956</param></interceptor-ref><!-- 默認攔截器必須放在fileUpload之后,否則無效 --><interceptor-ref name="defaultStack" /></action></package> </struts>

???????????

上傳表單頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>文件上傳</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"></head><body><!-- ${pageContext.request.contextPath}/upload/execute_upload.do --><!-- ${pageContext.request.contextPath}/upload2/upload2.do --><form action="${pageContext.request.contextPath}/upload2/upload2.do" enctype="multipart/form-data" method="post">文件:<input type="file" name="image"><input type="submit" value="上傳" /></form><br/><s:fielderror /></body> </html>

???????????

顯示結果頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>上傳成功</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> </head><body>上傳成功!<br/><br/><!-- ${pageContext.request.contextPath} tomcat部署路徑,如:D:\apache-tomcat-6.0.18\webapps\struts2_upload\ --><img src="${pageContext.request.contextPath}/<s:property value="'images/'+imageFileName"/>"><s:debug></s:debug></body> </html>

總結

以上是生活随笔為你收集整理的struts2之单个文件上传(特别推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。