一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

struts2之單個文件上傳

 IT_易風 2016-03-12

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

開發(fā)步驟如下:

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;

@Override
public 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./dtds/struts-2.0.dtd">

<struts>
<!-- 該屬性指定需要Struts2處理的請求后綴,該屬性的默認值是action,即所有匹配*.action的請求都由Struts2處理。
如果用戶需要指定多個請求后綴,則多個后綴之間以英文逗號(,)隔開。
-->
<constant name="struts.action.extension" value="do" />
<!-- 設置瀏覽器是否緩存靜態(tài)內容,默認值為true(生產環(huán)境下使用),開發(fā)階段最好關閉 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 當struts的配置文件修改后,系統(tǒng)是否自動重新加載該文件,默認值為false(生產環(huán)境下使用),開發(fā)階段最好打開 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 開發(fā)模式下使用,這樣可以打印出更詳細的錯誤信息 -->
<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" />
<!-- 指定允許上傳的文件最大字節(jié)數(shù)。默認值是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">
<!-- 動態(tài)設置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>
<!-- 文件大小, 以字節(jié)為單位 -->
<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>
復制代碼

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    在线亚洲成人中文字幕高清| 中文日韩精品视频在线| 果冻传媒精选麻豆白晶晶| 99热九九热这里只有精品| 国产精品成人又粗又长又爽| 亚洲最大的中文字幕在线视频| 亚洲精品一二三区不卡| 国产三级视频不卡在线观看| 国产老女人性生活视频| 欧美精品一区二区三区白虎| 国产一区欧美一区日本道| 九九热精彩视频在线免费| 99久久精品免费看国产高清| 草草视频福利在线观看| 亚洲欧美日韩精品永久| 欧美一区二区口爆吞精| 国产免费一区二区三区av大片| 好吊妞视频只有这里有精品| 欧美大粗爽一区二区三区 | 日韩欧美中文字幕av| 污污黄黄的成年亚洲毛片| 日本欧美三级中文字幕| 国产一区二区三区午夜精品 | 国产黑人一区二区三区| 色哟哟在线免费一区二区三区| 加勒比系列一区二区在线观看| 亚洲熟妇熟女久久精品 | 粉嫩国产一区二区三区在线| 黄色国产自拍在线观看| 美国欧洲日本韩国二本道| 亚洲国产精品久久琪琪| 国产精品一区二区高潮| 国产一区二区三区av在线| 国产精品熟女乱色一区二区| 久久女同精品一区二区| 在线九月婷婷丁香伊人| 亚洲国产精品久久琪琪| 亚洲精品福利视频你懂的| 亚洲综合香蕉在线视频| 一区二区三区免费公开| 国产精品视频一区二区秋霞|