Struts2(4)

1.struts2文件上传
Struts2 文件上传基于 Struts2 拦截器实现;Struts2 文件上传使用的是 fileupload 组件;Struts2 文件上传大小默认是 2M。

(1)在 fileupload.jsp 文件的 Form表单中配置 enctype="multipart/form-data"

<form action="upload" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="cocoomg"/><br/>
    <input type="submit" value="提交"/>
</form>

(2)在 FileUploadAction.java 文件中定义上传文件,上传文件名,上传文件类型。

Struts2 获取上传文件:name (name 是文件表单的 name)
Struts2 获取上传文件名:name+FileName;
Struts2 获取上传文件的类型:name+ContentType;

private File cocoomg; // 文件
private String cocoomgFileName;  // 文件名
private String cocoomgContentType;  // 文件类型

@Override
public String execute() throws Exception {
    System.out.println("文件名:"+cocoomgFileName);
    System.out.println("文件类型:"+cocoomgContentType);
    String filePath="C:/"+cocoomgFileName; //上传到C盘
    File saveFile=new File(filePath);
    FileUtils.copyFile(cocoomg, saveFile); //(File srcFile, File destFile) 
    return SUCCESS;
}

2.配置文件的大小及类型
在struts.xml文件中配置拦截器

<package name="manager" extends="struts-default">
        
        <action name="upload" class="com.java1234.action.FileUploadAction">
            <result name="success">/success.jsp</result>
            <result name="input">/fileupload.jsp</result>
            
            <interceptor-ref name="fileUpload">
                <param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
                <param name="maximumSize">81101</param>
            </interceptor-ref>
            
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
        
    </package>

大文件上传(默认最大2M),在struts.xml文件中配置

<constant name="struts.multipart.maxSize" value="20000000"></constant>
    

3.多文件上传
(1)在 fileupload.jsp 文件的 Form表单中配置 enctype="multipart/form-data"

<form action="upload" method="post" enctype="multipart/form-data">
        文件1:<input type="file" name="cocoomg"/><br/>
        文件2:<input type="file" name="cocoomg"/><br/>
        文件3:<input type="file" name="cocoomg"/><br/>
    <input type="submit" value="提交"/>
</form>

(2)在 FilesUploadAction.java 文件中定义上传文件,上传文件名,上传文件类型。

Struts2 获取上传文件:name (name 是文件表单的 name)
Struts2 获取上传文件名:name+FileName;
Struts2 获取上传文件的类型:name+ContentType;

private File[] cocoomg; // 文件
private String[] cocoomgFileName;  // 文件名
private String[] cocoomgContentType;  // 文件类型

@Override
public String execute() throws Exception {
        for(int i=0; i<cocoomg.length; i++){
                System.out.println("文件名:"+cocoomgFileName[i]);
                System.out.println("文件类型:"+cocoomgContentType[i]);
            String filePath="C:/"+cocoomgFileName[i]; //上传到C盘
            File saveFile=new File(filePath);
            FileUtils.copyFile(cocoomg[i], saveFile); //(File srcFile, File destFile) 
        }
        return SUCCESS;
}

4.文件下载
返回的是文件流 inputStream

(1)FileDownloadAction.java 文件

public class FileDownloadAction extends ActionSupport{
    
    private String fileName;

    public String getFileName() throws Exception{
        fileName=new String(fileName.getBytes(),"ISO8859-1"); //中文名称乱码解决办法
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    
        //要求使用  InputStream getInputStream()
    public InputStream getInputStream()throws Exception{  
        File file=new File("C:/美女1.jpg");
        this.fileName="美女1号";  //此处不需要加后缀
        return new FileInputStream(file);
    }

(2)struts.xml 文件配置不一样

<action name="download" class="com.java1234.action.FileDownloadAction">
    <result type="stream">
        <param name="contentDisposition">attachment;filename=${fileName}</param>
    </result>
</action>

(3)filedownload.jsp

<a href="download">文件下载</a>

5.防重复提交

学习地址推荐:www.java1234.com

猜你喜欢

转载自www.cnblogs.com/Cocoomg/p/9819191.html
今日推荐