使用struts2进行文件下载以及下载权限控制的例子
来源:互联网 发布:wifi共享大师for mac 编辑:程序博客网 时间:2024/06/06 20:07
本测试有两个模块,一个是文件上上传,一个是文件下载,文件下载的时候会检查是否足有权限,如果没有,就会转发到登录页面,如果有权限,就会直接启动下载程序,给浏览器一个输出流。
下面直接上我的代码:
登录表单
<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="download.file" </param> </result> <result name="login">/login.jsp</result> </action></package></struts>
0 0
- 使用struts2进行文件下载以及下载权限控制的例子
- 【Struts2】中文文件的下载与下载权限的控制
- 使用Struts2进行文件下载
- 你能下载,他能下载吗?-----Struts2文件下载的权限控制(14)
- 文件下载的权限控制
- struts2进行文件的下载
- Struts2控制文件下载
- Struts2控制文件下载
- 使用Struts2框架进行文件的上传与下载
- 文件上传与下载权限的控制
- struts2的文件下载(1):下载前的授权控制
- Struts2文件下载小例子
- 文件下载权限控制机制
- 利用struts2进行文件下载
- BackgroundWorker的使用例子-下载文件
- Struts2 的文件下载
- Struts2 的文件下载
- Struts2文件的下载
- tyvj-2049 魔法珠
- hdu2899_Strange fuction
- 异常java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
- 拉灯游戏
- iOS-OAuth授权
- 使用struts2进行文件下载以及下载权限控制的例子
- 模态窗口返回值给当前窗口页面
- 【转】MySQL日期时间函数大全
- POJ-3264-Balanced Lineup-单点更新
- hdoj pbd
- hdu5299 Circles Game
- c++大数加减法的实现
- 欢迎使用CSDN-markdown编辑器
- Windows下重置MySQL密码