java中struts2实现文件上传下载功能

网友投稿 227 2023-07-17


java中struts2实现文件上传下载功能

先谈一谈struts2实现文件的上传和下载实例实现的原理:

Struts 2是通过Commons FileUpload文件上传。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

具体实现:

一、创建index.jsp页面

下载

创建result.jsp页面

当然别忘了在每个页面上都添加上struts2 标签引用<%@taglib prefix="s" uri="/struts-tags" %>

二、创建updown.js文件,在index.jsp中引用

function checkf(){

var files = document.getElementsByName("file");

if(files[0].value.length!=0){

return true;

}else{

alert("请选择文件");

return false;

}

}

function addMore()

{

var td = document.getElementById("more");

var br = document.createElement("br");

var input = document.createElement("input");

var button = document.createElement("input");

input.type = "file";

input.name = "file";

button.type = "button";

button.value = "Remove";

button.onclick = function()

{

td.removeChild(br);

td.removeChild(input);

td.removeChild(button);

}

td.appendChild(br);

td.appendChild(input);

td.appendChild(button);

}

三、创建upDownloadAction.java

package com.action;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.opensymphony.xwork2.ActionSupport;

import org.apache.struts2.ServletActionContext;

public class UpDownloadAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private List file;// 对应jsp中file标签

private List fileFileName;//

private List fileContentType;//

private String fileName;//获得jsp中pram参数

@SuppressWarnings("deprecation")

// 文件上传

public String uploadFiile() throws Exception {

String root = ServletActionContext.getServletContext().getRealPath(

"/upload");// 上传路径

System.out.println(root);

InputStream inputStream;

File destFile;

OutputStream os;

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

inputStream = new FileInputStream(file.get(i));

destFile = new File(root, this.getFileFileName().get(i));

os = new FileOutputStream(destFile);

byte[] buffer = new byte[400];

int length = 0;

while ((length = inputStream.read(buffer)) > 0) {

os.write(buffer, 0, length);

}

inputStream.close();

os.close();

}

HttpServletRequest request = ServletActionContext.getRequest();

request.setAttribute("fileName", fileFileName);

return SUCCESS;

}

// 文件下载

public InputStream getDownloadFile() throws FileNotFoundException,

UnsupportedEncodingException {

System.out.println(getFileName());

// 如果下载文件名为中文,进行字符编码转换

ServletActionContext.getResponse().setHeader("Content-Disposition","attachment;fileName="

+ java.net.URLEncoder.encode(fileName, "UTF-8"));

InputStream inputStream = new FileInputStream("F:/" //使用绝对路径 ,从该路径下载“测试.txt"文件

+ this.getFileName());

System.out.println(inputStream);

return inputStream;

}

// 下载

public String downloadFile() throws Exception {

return SUCCESS;

}

public String getFileName() throws UnsupportedEncodingException {

return fileName;

}

public void setFileName(String fileName)

throws UnsupportedEncodingException {

this.fileName = new String(fileName.getBytes("ISO8859-1"), "utf-8");

}

}

注:属性的 get和set方法已省略。

四、最后是配置文件

1、web.xml配置

struts2

struts2

/*

2、struts.xml配置

/jsp/result.jsp

409600

text/plain

</interceptor-ref>

application/txt;

attachment;filename="${fileName}"

downloadFile

2048

一个简单的Struts2多文件上传和单文件下载就实现了。

以上就是本文的全部内容,希望对大家的学习有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ajax跨域调用webservice的实现代码
下一篇:java中set接口使用方法详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~