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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java action 上传文件_Struts2实现单文件或多文件上传功能

發布時間:2023/12/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java action 上传文件_Struts2实现单文件或多文件上传功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡述

Struts2的文件上傳其實也是通過攔截器來實現的,只是該攔截器定義為默認攔截器了,所以不用自己去手工配置,

二、指定用戶上傳文件的大小,有兩種方式

1)默認是在default.properties 文件的 struts.multipart.maxSize=2097152? 鍵值指定為2097152 也就是2M,通過計算 2097152/(1024*1024) = 2 M

那我們可以改變其默認值,只要在src目錄下,新建一個 struts.properties 文件,指定上傳大小 如下:

一次上傳只可以上傳10M,不管一次上傳多少個文件,按總和計算

2)在struts.xml文件中指定,如圖:

其實name就對應struts.properties的鍵,value對應 值

注意:如果即在struts.properties設定文件上傳大小,又在struts.xml 設定文件上傳大小,則struts.properties的優先級高于struts.xml,一般在一處指定上傳大小即可,推薦 struts.properties

三、Struts2之單文件上傳

1.fileupload.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'fileupload.jsp' starting page

用戶名:

上傳文件:

2.具體處理上傳的 FileUpload.java

package com.struts2.fileupload;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**

* 單個文件上傳

* @author Administrator

* 上傳文件其實是上傳了兩份,

*

* 首先將上傳的文件保存到 default.properties 文件中 struts.multipart.saveDir鍵指定的目錄中

* 默認是空的

* 保存在 Tomcat 6.0\work\Catalina\localhost\struts2目錄下以.tmp后綴名的文件

*

* 如果要在 struts.multipart.saveDir 指定目錄, 則可以在 src文件夾下 建一個 struts.properties,

* 覆蓋 default.properties 的某些鍵值

*

* 還有一份是 存放在自己設定的目錄下

*/

public class FileUpload extends ActionSupport {

private String usename ;

private File file1 ; //具體上傳文件的 引用 , 指向臨時目錄中的臨時文件

private String file1FileName ; // 上傳文件的名字 ,FileName 固定的寫法

private String file1ContentType ; //上傳文件的類型, ContentType 固定的寫法

public String getUsename() {

return usename;

}

public void setUsename(String usename) {

this.usename = usename;

}

public File getFile1() {

return file1;

}

public void setFile1(File file1) {

this.file1 = file1;

}

public String getFile1FileName() {

return file1FileName;

}

public void setFile1FileName(String file1FileName) {

this.file1FileName = file1FileName;

}

public String getFile1ContentType() {

return file1ContentType;

}

public void setFile1ContentType(String file1ContentType) {

this.file1ContentType = file1ContentType;

}

@Override

public String execute() throws Exception {

//獲取文件存儲路徑

String path = ServletActionContext.getRequest().getRealPath("/upload");

//輸出流

OutputStream os = new FileOutputStream(new File(path,file1FileName));

//輸入流

InputStream is = new FileInputStream(file1);

byte[] buf = new byte[1024];

int length = 0 ;

while(-1 != (length = is.read(buf) ) )

{

os.write(buf, 0, length) ;

}

is.close();

os.close();

return SUCCESS;

}

}

3.最終顯示結果的頁面,filedemo.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'filedemo.jsp' starting page

上傳成功:

usename:

file:

contentType:

四、Struts2之多文件上傳

1.fileupload.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'fileupload.jsp' starting page

用戶名:

上傳文件:

上傳文件:

兩個上傳文件的name屬性值要是一樣的,后臺方便處理

2.具體處理上傳文件的FileUpload2.java

多文件上傳用集合的方式

package com.struts2.fileupload;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**

* 多文件上傳,用集合的方式

* @author Administrator

*

*/

public class FileUpload2 extends ActionSupport {

private String usename ;

private List file1 ;

private List file1FileName ;

private List file1ContentType ;

public String getUsename() {

return usename;

}

public void setUsename(String usename) {

this.usename = usename;

}

public List getFile1() {

return file1;

}

public void setFile1(List file1) {

this.file1 = file1;

}

public List getFile1FileName() {

return file1FileName;

}

public void setFile1FileName(List file1FileName) {

this.file1FileName = file1FileName;

}

public List getFile1ContentType() {

return file1ContentType;

}

public void setFile1ContentType(List file1ContentType) {

this.file1ContentType = file1ContentType;

}

@Override

public String execute() throws Exception {

//獲取文件存儲路徑

String path = ServletActionContext.getRequest().getRealPath("/upload");

for(int i = 0 ; i < file1.size() ; i++ )

{

OutputStream os = new FileOutputStream(new File(path,file1FileName.get(i)));

InputStream is = new FileInputStream(file1.get(i));

byte[] buf = new byte[1024];

int length = 0 ;

while(-1 != (length = is.read(buf) ) )

{

os.write(buf, 0, length) ;

}

is.close();

os.close();

}

return SUCCESS;

}

}

3.用于顯示的界面filedemo.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'filedemo2.jsp' starting page

上傳成功:

usename:

文件:

遍歷集合的方式,用struts2提供的標簽 iterator 可以實現

文件:

toUpperCase()字符串的方法是把字母轉為大寫

下載鏈接:

1)Servlet 文件上傳? 點擊打開鏈接

2)Struts2之下載? 點擊打開鏈接

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的java action 上传文件_Struts2实现单文件或多文件上传功能的全部內容,希望文章能夠幫你解決所遇到的問題。

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