- package test;
- //用到了输入流,必须的支持
- import java.io.*;
- //这个是为了取出Upload这个文件夹的绝对路径
- import org.apache.struts2.ServletActionContext;
- //这是Struts2必要的支持
- import com.opensymphony.xwork2.ActionSupport;
- //防止报序列号警告
- @SuppressWarnings("serial")
- //Struts2必须继承这个类
- public class upload extends ActionSupport {
- //上传文件Action固有的两个属性fileContentType不是必须的
- //但一定要设置好getter与setter,这是Struts2固有的特点。
- //设置完getter与setter一定不可以在执行方法中再次初始化,如String xx=
- //这样前台会取不值的!
- private File file;
- private String fileFileName;
- //saveFileName是保存到服务器的名字
- //利用传来过的文件的后缀名+时间戳构造,
- //必要时还可以补上用户名
- private String saveFileName;
- //这是文件的大小,主要是为了传到前台
- private String fileLength;
- private String errMsg;
- //防止输入输出流报警告
- @SuppressWarnings("resource")
- public String run() throws Exception {
- //对错误信息字符串赋予""值,否则会返回前台一个null
- errMsg = "";
- //判断是否符合上传的条件
- boolean canUpload = true;
- //取出Upload的绝对路径
- String saveFilePath = ServletActionContext.getServletContext()
- .getRealPath("/Upload");
- //取出上传文件的后缀名
- String fileExtensions = getFileFileName().substring(
- getFileFileName().lastIndexOf("."));
- //根据后缀名判断是否能上传
- if (!(fileExtensions.equals(".gif") || fileExtensions.equals(".png")
- || fileExtensions.equals(".jpeg")
- || fileExtensions.equals(".jpg") || fileExtensions
- .equals(".bmp"))) {
- errMsg += "上传文件只能是图片,后缀名必须是bmp,gif,jpg,jpeg!";
- canUpload = false;
- }
- //根据文件大小判断是否能上传
- if (file.length() > (2 * 1024 * 1024)) {
- errMsg += "上传文件太大,请少于2M!";
- canUpload = false;
- }
- //把文件大小转化成字符串,推回给前台
- fileLength = (file.length() / 1024) + "KB";
- //如果可以上传
- if (canUpload) {
- //就营造一个服务器上的文件名
- saveFileName = System.currentTimeMillis() + fileExtensions;
- //输出流是保存到服务器的输出流
- FileOutputStream fos = new FileOutputStream(saveFilePath + "/"
- + saveFileName);
- //输入流就是传过来的文件
- FileInputStream fis = new FileInputStream(getFile());
- //缓冲数组
- byte[] buffer = new byte[1024];
- int len = 0;
- //输入流不停读东西到缓冲数组,直到读完
- while ((len = fis.read(buffer)) > 0) {
- //输出流不停把缓冲数组的东西的东西写到服务器上Upload的绝对目录上面
- fos.write(buffer, 0, len);
- }
- //返回struts.xml一个成功结果
- return "success";
- } else {
- return "error";
- }
- }
- //所有静态成员必须有getter与setter,否则不能与前台交互
- public File getFile() {
- return file;
- }
- public void setFile(File file) {
- this.file = file;
- }
- public String getFileFileName() {
- return fileFileName;
- }
- public void setFileFileName(String fileFileName) {
- this.fileFileName = fileFileName;
- }
- public String getSaveFileName() {
- return saveFileName;
- }
- public void setSaveFileName(String saveFileName) {
- this.saveFileName = saveFileName;
- }
- public String getErrMsg() {
- return errMsg;
- }
- public void setErrMsg(String errMsg) {
- this.errMsg = errMsg;
- }
- public String getFileLength() {
- return fileLength;
- }
- public void setFileLength(String fileLength) {
- this.fileLength = fileLength;
- }
- }
【Struts2】文件的上传与上传权限的控制
最新推荐文章于 2021-08-06 20:40:50 发布