zoukankan      html  css  js  c++  java
  • 使用struts2进行文件下载以及下载权限控制的例子

    本测试有两个模块,一个是文件上上传,一个是文件下载,文件下载的时候会检查是否足有权限,如果没有,就会转发到登录页面,如果有权限,就会直接启动下载程序,给浏览器一个输出流。

    下面直接上我的代码:

    登录表单

    
    <body>
        <form id="form1" name="form1" method="post" action="login.action">
            <p>
                <label for="textfield">账号</label> <input type="text" name="username"
                    id="textfield" />
            </p>
            <p>
                <label for="textfield2">密码</label> <input type="text" name="password"
                    id="textfield2" />
            </p>
            <p>
                <input type="submit" name="button" id="button" value="提交" /> <br />
            </p>
        </form>
    </body>

    上传表单:

     <body>
    <form action="upload.action" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <p>
        <label for="fileField"></label>
        <input type="file" name="fileobj" id="fileField" />
      </p>
      <p>
        <input type="submit" name="button" id="button" value="提交" />
        <br />
      </p>
    </form>
    <a href="showpic.action">查看上传照片</a>
      </body>

    查看文件列表:

    
    
        <table cellspacing="5" align="center">
            <tr>
                <s:iterator value="#request.photoList" id="photo" status="stu">
                    <td><a
                        href="downpic.action?inputFile=<s:property value="photo"/>"> <img
                            src='images/<s:property value="photo"/>' width="400" height="420">
                    </a>
                    </td>
            </tr>
            <tr>
                </s:iterator>
            </tr>
        </table>
    
    

    下面是action部分:

    package com.updown.Action;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.UUID;
    
    import org.apache.commons.io.FilenameUtils;
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UploadAction extends ActionSupport {
    private File fileobj;
    private String fileobjFileName;
    private String fileobjContentType;
    
        /**
         * @return
         */
        public String execute() throws Exception {
            InputStream is = new FileInputStream(fileobj);
            String photoPath = ServletActionContext.getServletContext()
                    .getRealPath("/images");
            File filePhotoPath = new File(photoPath);
            if (!filePhotoPath.isDirectory()) {
                filePhotoPath.mkdir();
            }
    
            String extension = FilenameUtils.getExtension(this.getFileobjFileName());
            String filename = UUID.randomUUID().toString() + "." + extension;
    
            File tofile = new File(photoPath, filename);
    
            OutputStream os = new FileOutputStream(tofile);
            byte[] buffer = new byte[1024];
            int length = 0;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
            is.close();
            os.close();
    
            return SUCCESS;
        }
    
    
    
        public File getFileobj() {
            return fileobj;
        }
    
        public void setFileobj(File fileobj) {
            this.fileobj = fileobj;
        }
    
        public String getFileobjFileName() {
            return fileobjFileName;
        }
    
        public void setFileobjFileName(String fileobjFileName) {
            this.fileobjFileName = fileobjFileName;
        }
    
        public String getFileobjContentType() {
            return fileobjContentType;
        }
    
        public void setFileobjContentType(String fileobjContentType) {
            this.fileobjContentType = fileobjContentType;
        }
    
    }
    package com.updown.Action;
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport {
    private String username;
    private String password;
        /**
         * @return
         */
        public String execute() {
            // TODO Auto-generated method stub
            if (username.equals("admin")&&password.equals("admin")){
            ServletActionContext.getRequest().getSession().putValue("user", "admin");
            return SUCCESS;
            }
            return INPUT;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    
    }
    package com.updown.Action;
    import java.io.File;
    import java.io.InputStream;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class ShowPicAction extends ActionSupport {
        private String inputFile;
        private InputStream targetFile;
    
    public void setTargetFile(InputStream targetFile) {
            this.targetFile = targetFile;
        }
    public InputStream getTargetFile(){
        return ServletActionContext.getServletContext().getResourceAsStream("/images/"+inputFile);
    }
        /**
         * @return
         */
        public String execute() {
            String photoPath = ServletActionContext.getServletContext()
                    .getRealPath("/images");
            File fphotoPath = new File(photoPath);
            String[] photoList = fphotoPath.list();
            HttpServletRequest request = ServletActionContext.getRequest();
            request.setAttribute("photoList", photoList);
            return SUCCESS;
        }
        public String downfile(){
            String user = (String) ServletActionContext.getRequest().getSession().getAttribute("user");
    if (user!=null&&user.equals("admin"))
            return SUCCESS;
    return LOGIN;
    
    
        }
        public String getInputFile() {
            return inputFile;
        }
        public void setInputFile(String inputFile) {
            this.inputFile = inputFile;
        }
    
    }

    struts-xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    
        <package name="default" extends="struts-default">
                <default-action-ref name="download"></default-action-ref>
    
            <action name="login" class="com.updown.Action.UserAction">
                <result name="success">/upload.jsp</result>
                <result name="input">/login.jsp</result>
            </action>
            <action name="upload" class="com.updown.Action.UploadAction">
                <result name="success">/upload.jsp</result>
            </action>
            <action name="showpic"
                class="com.updown.Action.ShowPicAction">
                <result name="success">/index.jsp</result>
            </action>
            <action name="downpic" class="com.updown.Action.ShowPicAction"
                method="downfile">
    
                <result name="success" type="stream">
                    <param name="contentType">
                        application/octet-stream
                    </param>
                    <param name="inputName">targetFile</param>
                    <param name="bufferSize">4096</param>
                    <param name="contentDisposition">
                        filename=&quot;download.file&quot;
                    </param>
                </result>
    
                <result name="login">/login.jsp</result>
            </action></package></struts>    
    
  • 相关阅读:
    LR十九:Analysis 图标分析
    Llinux:mysql的安装教程
    Jmeter28:linux下实现压测-html报表生成-控制台参数优化
    Llinux:自动分配ip的方法
    Llinux:环境变量的配置-java-JMETER
    if _ else if _ else,case,程序逻辑判断- java基础
    LR十八:Controller组件- 集合点的功能-loadrunner
    LR十七:Controller
    Jmeter27:TCP_协议_socket接口
    LR十六:socket_tcp协议_loadrunner测试
  • 原文地址:https://www.cnblogs.com/mrcharles/p/11879885.html
Copyright © 2011-2022 走看看