struts2文件上传

jsp页面代码

<form id="bb" name="myform" action="" method="post"
            enctype="multipart/form-data">
            <input id="aa" type="hidden" name="id" value="" />
            <table width="800" border="0" cellpadding="0" cellspacing="0"
                align="center" id="td1">

            </table>
        </form>

js代码

function readyok(id) {
    var infoPath = $("#knowledgeinfo").val();//文件保存路劲:
    d:a\b\d\d.rar
    //alert(infoPath);
    /*$("#bb").attr("action",
            "/Examination2.0/upload_uploadfile_hwh.action?filename="+infoPath+"&id=" + id);*/
    //tomcat的url地址不允许有"\"字符
    $("#bb").attr("action",
            "/Examination2.0/upload_uploadfile.action?id="+id);
    if (infoPath == "") {
        $("#errorInfo").html("请选择您要上传的文件!");
        $("#errorInfo").attr("class", "error");
        return false;
    }
    var fileInfo = $("#knowledgeinfo").val();
    var filetype = fileInfo.substring(fileInfo.lastIndexOf(".") + 1);

    if (filetype != "rar" && filetype != "zip" && filetype != "RAR"
            && filetype != "ZIP") {
        $("#errorInfo").html("您上传的文件格式有误,请上传后缀名为.rar或.zip的文件!");
        $("#errorInfo").attr("class", "error");
        return false;
    }
    var fileName = fileInfo.substring(fileInfo.lastIndexOf("\\") + 1);
    var reg = /^[a-zA-Z0-1][\w.]{1,30}$/;
    if (!reg.test(fileName)) {
        $("#errorInfo").html("您上传的文件的文件名有误,请将上传的文件的文件名改为英文!");
        $("#errorInfo").attr("class", "error");
        return false;
    }
    document.myform.submit();
}   

action代码


package com.yc.webexam.actions;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileUploadException;
import org.apache.tomcat.util.http.fileupload.RequestContext;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.springframework.context.annotation.Scope;

import com.opensymphony.xwork2.ActionSupport;
import com.yc.biz.ADailyTalkBiz;

@SuppressWarnings("serial")
@Scope("prototype")
public class UploadAction extends ActionSupport {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");

    @Resource(name = "aDailyTalkBiz")
    private ADailyTalkBiz aDailyTalkBiz;

    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();

    private HttpSession mysession = request.getSession();

    public void setServletResponse(HttpServletResponse response) {
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        this.response = response;
    }

    public void setServletRequest(HttpServletRequest request) {
        try {
            request.setCharacterEncoding("utf-8");
            this.request = request;
            this.mysession = this.request.getSession();
        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();
        }
    }

    // 封装上传文件域的属性
    private File knowledgeinfo;
    // 封装上传文件类型的属性
    private String knowledgeinfoContentType;
    // 封装上传文件名的属性
    private String knowledgeinfoFileName;
    // 接受依赖注入的属性
    private String savePath;

    /*public void uploadfile_hwh() throws FileUploadException{
         DiskFileItemFactory factory = new DiskFileItemFactory();  
         factory.setSizeThreshold(1024*1024*80);  
         factory.setRepository(new File(request.getServletContext().getRealPath("WEB-INF/temp")));  
         //1.2获取上传文件的核心类  
         ServletFileUpload fileload = new ServletFileUpload(factory);  
         fileload.setHeaderEncoding("UTF-8");  
         fileload.setFileSizeMax(1024*1024*100);  
         fileload.setSizeMax(1024*1024*200);
         List<FileItem> list = fileload.parseRequest((RequestContext) request);
         for(FileItem item :list){ 
             if(!item.isFormField()){//普通字段  
                 String realname = item.getName();  
                 System.out.println("realname======> "+realname);
             }
         }
    }*/

    public void uploadfile() {
        String id = null; // 新技术编号
        byte[] bt = null;
        String fileName = null;
        int result = 0;

        id = request.getParameter("id");
        FileOutputStream fos = null;
        FileInputStream fis = null;
        try {
            // 建立文件输出流
            String filetype = getKnowledgeinfoFileName().substring(getKnowledgeinfoFileName().lastIndexOf("."));
            String filename = getKnowledgeinfoFileName().substring(getKnowledgeinfoFileName().lastIndexOf("\\") + 1,
                    getKnowledgeinfoFileName().lastIndexOf(".")) + sdf.format(new Date()) + filetype;
            String path=getSavePath() ;
            //获取Tomact根路劲   C:\Users\Administrator\Desktop\apache-tomcat-8.0.44\webapps
            for(int i=0;i<2;i++){
                path=path.substring(0,path.lastIndexOf("\\"));
                System.out.println(path);
            }
            path=path+"\\"+"upload";
            String file = path + "\\" + filename;
            fos = new FileOutputStream(file);
            // 建立文件上传流
            //TODO
            fis = new FileInputStream(getKnowledgeinfo());
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, len);
            }

            fis = new FileInputStream(file);
            bt = new byte[fis.available()];
            fis.read(bt);
            fis.close();
            result = aDailyTalkBiz.uploadKnowledgeInfos(bt, Integer.parseInt(id), filename);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(fos, fis);
        }

    }

    /**
     * 返回上传文件的保存位置
     * 
     * @return
     */
    public String getSavePath() throws Exception {
        return ServletActionContext.getServletContext().getRealPath(savePath);
    }

    public void setSavePath(String savePath) {
        this.savePath = savePath;
    }

    public File getKnowledgeinfo() {
        return knowledgeinfo;
    }

    public void setKnowledgeinfo(File knowledgeinfo) {
        this.knowledgeinfo = knowledgeinfo;
    }

    public String getKnowledgeinfoContentType() {
        return knowledgeinfoContentType;
    }

    public void setKnowledgeinfoContentType(String knowledgeinfoContentType) {
        this.knowledgeinfoContentType = knowledgeinfoContentType;
    }

    public String getKnowledgeinfoFileName() {
        return knowledgeinfoFileName;
    }

    public void setKnowledgeinfoFileName(String knowledgeinfoFileName) {
        this.knowledgeinfoFileName = knowledgeinfoFileName;
    }

    private void close(FileOutputStream fos, FileInputStream fis) {
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                System.out.println("FileInputStream关闭失败");
                e.printStackTrace();
            }
        }
        if (fos != null) {
            try {
                fos.close();
            } catch (IOException e) {
                System.out.println("FileOutputStream关闭失败");
                e.printStackTrace();
            }
        }
    }

    public void setaDailyTalkBiz(ADailyTalkBiz aDailyTalkBiz) {
        this.aDailyTalkBiz = aDailyTalkBiz;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值