上传文件

上传文件:
action:
public class FileUpLoadImp extends ActionSupport implements FileUpLoad {
    //上传文件保存的基本路径,不包含需要动态创建的目录
    private String saveDir=System.getProperty("user.dir")+File.separator+"flv";
    //上传文件
    private File file;
    //上传文件名
    private String fileFileName;
    private FileUpLoadService fservices;
    private String title;
    private UserInfo user;
     /**
      * 重写父类超大小限制异常抛出方法
      * */
    @Override
    public void addActionError(String anErrorMessage) {
        //这里要先判断一下异常,是文件超过大小限制才处理
        if (anErrorMessage.startsWith("the request was rejected because its size")) {
            //将信息替换掉
            super.addActionError("您上传的附件过大,请确保单次所上传的附件大小总和没有超过100Mb!");
        } else {
           //不是超限制则不管它
            super.addActionError(anErrorMessage);
        }
    }

    @Override
    public String upLoadFileVedio() throws IOException {
             //验证格式
        System.out.println(title+":"+user.getUsername()+":"+user.getPhone());
     if(FileUpLoadUtils.checkVideoType(this.getFileFileName())){
            /**处理上传视频保存路径**/
            //创建动态路径拼接上固定路径
           // UserInfo userInfo=(UserInfo)ServletActionContext.getRequest().getSession().getAttribute("user");
            UserInfo userInfo=new UserInfo();
            userInfo.setId(22);
            saveDir= saveDir+File.separator+userInfo.getId();
            //处理路径不存在则创建
             FileUpLoadUtils.makeDir(saveDir);
            //逻辑处理重命名文件
             setFileFileName(FileUpLoadUtils.changeFileName(getFileFileName()));
            //将路径及文件名拼接copy文件及返回客户端
            saveDir=saveDir+File.separator+getFileFileName();
            if(fservices.saveFile(file,saveDir)){  //保存成功,插入数据库,返回页面信息
                PrintWriter pw=ServletActionContext.getResponse().getWriter();
                pw.write(saveDir);
                pw.flush();
                pw.close();
            }
            return null;
     }
         return "input";
    }

    public String getSaveDir() {
        return saveDir;
    }

    public void setSaveDir(String saveDir) {
        this.saveDir = saveDir;
    }

    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 FileUpLoadService getFservices() {
        return fservices;
    }

    public void setFservices(FileUpLoadService fservices) {
        this.fservices = fservices;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public UserInfo getUser() {
        return user;
    }

    public void setUser(UserInfo user) {
        this.user = user;
    }
}

service:
public class FileUpLoadService{
    public boolean saveFile(File file, String dir){
        InputStream in=null;
        OutputStream out=null;
        try{ //创建流
        //创建保存文件
        File uploadFile = new File(dir);
        //以上传文件创建输入流读入文件
        in = new FileInputStream(file);
        //输出流copy文件到储存地址
        out = new FileOutputStream(uploadFile);
        //输出
        byte[] buffer = new byte[1024 * 1024];
        int length;
        while ((length = in.read(buffer)) > 0) {
            out.write(buffer, 0, length);
        }
        //关闭流
        in.close();
        out.close();  }
        catch (IOException e){
         return false;
        }
        return true;
    }
}

XML:
<struts>
    <!-- 系统常量定义,定义上传文件字符集编码 -->
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <!-- 系统常量定义,定义上传文件临时存放路径 如D://-->
    <constant name="struts.multipart.saveDir" value="./"></constant>
     <!-- 上传大小,类中也可验证小于此值的文件 -->
    <constant name="struts.multipart.maxSize" value="104857600" />
    <package name="actionImp.FileUpLoadImp" namespace="" extends="struts-default">
        <action name="uploadAction" class="action_upLoad">
            <!-- 文件上传大小超限制跳转在此配置-->
            <result name="input">/test.jsp</result>
        </action>
    </package>
</struts>

jsp:
<form action="uploadAction!upLoadFileVedio.do" method="post" enctype="multipart/form-data">
    <input type="text" name="title"/>
    <input type="text" name="user.username"/>
    <input type="text" name="user.phone"/>
    请选选择:<input type="File" name="file"/><br>
    <input type="submit" value="提交"/>
</form>

你可能感兴趣的:(上传文件)