博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2上传
阅读量:7060 次
发布时间:2019-06-28

本文共 3138 字,大约阅读时间需要 10 分钟。

用到的包:一个是commons-fileupload-1.3.2.jar,另一个是commons-io-2.2.jar,没有的话去struts-2.3.31\apps\WEB-INF\lib里面拷。

第一步:做界面

1.在webcontent里面建一个包,这里叫Upload,然后新建两个jsp,input是界面,upload是成功跳转的界面

在input.jsp中的form表单,除了写action和method,还需要加上enctype="multipart/form-data"

在选择文件的<input>标签中的type要写file

在upload中写一句话就可以了,仅仅作为一个页面的标记,不写也可以。这里写个“上传成功”

 

第二步:做action

 

package com.itnba.maya.controller;import java.io.File;import java.io.IOException;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Random;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport{    private String titile;    private File file;    private String fileFileName;//文件名    private String fileContentType;//文件类型        public String getFileFileName() {        return fileFileName;    }    public void setFileFileName(String fileFileName) {        this.fileFileName = fileFileName;    }    public String getTitile() {        return titile;    }    public void setTitile(String titile) {        this.titile = titile;    }    public File getFile() {        return file;    }    public void setFile(File file) {        this.file = file;    }    public String input(){        return SUCCESS;    }    public String upload() throws IOException{        //随机数        Random rand = new Random();        //给随机数一个范围        int n = rand.nextInt(9999);        //格式化一下,不够位补0        DecimalFormat df = new DecimalFormat("0000");        //把n放到format中格式化        String s = df.format(n);                //日期格式化        SimpleDateFormat sim = new SimpleDateFormat("yyyyMMddhhmmss");        //获取当前时间        Date now = Calendar.getInstance().getTime();        //把当前时间格式化        String prefix = sim.format(now);                //把随机数、时间和文件名拼接作为复制后的文件名        String newname = prefix+"_"+s+"_"+fileFileName;        //复制的地址        File destFile = new File("d://"+newname);        //执行        FileUtils.copyFile(file, destFile);        return SUCCESS;    }    }

插入的代码是我们的action的内容,执行一下看下结果。

上传一个叫新建文本文档.txt,上传成功后我们去D盘找一下

D盘有了一个加了时间和随机数的新建文本文档

 

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------

三个成员:1.File类型 2.String fileFileName属性名 3.String fileContentType属性名

org.apache.commons.io.FileUtils.copyFile很简单。否则用IO流也可以操作。
用IO流操作
InputStream is = new FileInputStream(file); 
OutputStream os = new FileOutputStream(new File(root, fileFileName));

byte[] buffer = new byte[500];

int length = 0;

while(-1 != (length = is.read(buffer, 0, buffer.length)))

{
os.write(buffer);
}

os.close();

is.close();

-------------------------------------------------------------------------------------------------

1.如何解决文件重名的问题?

加时间,随机数,用户名,序列号
2.如何解决大文件上传的问题?
在struts.xml 中添加常量。这个常量在struts.properties中(/org/apache/struts2/default.properties)。
<constant name="struts.multipart.maxSize" value="20971520"></constant>

 

转载于:https://www.cnblogs.com/liyh123/p/6589004.html

你可能感兴趣的文章
Python定制类(进阶6)
查看>>
关于web系统整体优化提速总结
查看>>
table size script :
查看>>
RTC终于tm的通了
查看>>
在Silverlight中如何创建WCF Service
查看>>
Android 下的 USB HID 设备读写
查看>>
CSV文件转JSON
查看>>
Android Context类
查看>>
ztree 根据id选中某一点且触发当前点的click事件
查看>>
10.16复习 数位DP——不要62
查看>>
input checkbox复选框点击获取当前选中状态jquery
查看>>
Git 安装与简单使用(新手必看)
查看>>
leetcode-143. Reorder List
查看>>
怎样解决if __name__ == "__main__":下面的代码没有执行的问题
查看>>
python从入门到实践-6章字典
查看>>
glusterfs 步骤
查看>>
浅谈gibbs sampling(LDA实验)
查看>>
Asp.net 后台添加CSS、JS、Meta标签
查看>>
JDBC连接SQL Server2008基本格式及示例代码 (转载收藏~)
查看>>
以前的GHOST系统没落,现在 原版WINDOWS更新节奏还快 MSDN itellyou
查看>>