“校园知网”5月7日冲刺计划书

  • 我昨天的成就(完成了哪个任务,花了多少时间,还剩余多少时间)

  1. 后台管理课程视频的上传功能
  2. 资源课件的上传功能
  • 遇到什么困难

  1. 上传文件问题,首先查阅资料了解文件上传的几种方式,参考博客:https://www.cnblogs.com/sunliyuan/p/5737928.html
  2. 文件上传的路径问题,即上传成功后如何自动保存至项目文件夹下
  3. 文件上传时如何限制上传文件的类型,在收到上传文件名时,如何判断后缀名是否合法?
  4. 上传下载的Servelt如何码,参考博客:https://blog.csdn.net/HH1778981113/article/details/86152368
package com.classnet.util.upload;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.upload.FormFile;

/**
 * 
 * 此类包含了关于上传文件的信息
 * 
 */
public class UploadFileImpl implements UploadFile, Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String path = "../upload/files";// 上传的路径;

    private int size;// 上传文件的大小
    private int filesize;//当前文件的大小
    private String fileType;// 文件类型

    private FormFile file;

    static final Log log = LogFactory.getLog(UploadFile.class);

    public void setFile(FormFile file) {
        this.file = file;
    }


    /**
     * 判断类型是否可以上传
     * 
     * @param type
     * @param array
     * @return flag
     */
    public boolean isFileType(String type, String array) {
        if (array.indexOf(type) == -1)
            return false;
        else
            return true;
    }

    /**
     * 得到文件类型。
     */
    public String getType(String str) {
        return str.substring(str.lastIndexOf(".") + 1, str.length());
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.shsct.eq.util.upload.IUploadFile#getType()
     */
    public String getType() {
        return getType(file.getFileName());
    }

    /**
     * 去掉文件名后辍
     * 
     * @param fileName
     * @return
     */
    public String removeType(String fileName) {
        if (fileName.lastIndexOf(".") != -1) {
            int le = fileName.lastIndexOf(".");
            fileName = fileName.substring(0, le);
        }
        return fileName;
    }



    /*
     * (non-Javadoc)
     * 
     * @see com.shsct.eq.util.upload.IUploadFile#save()
     */
    public void save() throws IOException, UploadException {
        if (this.file == null)
            throw new UploadException("文件不存在");
        save(removeType(file.getFileName()));
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.shsct.eq.util.upload.IUploadFile#save(java.lang.String)
     */
    public void save(String fileName) throws UploadException,IOException{
        if(isFileSizeMax())
            throw new UploadException("文件超过了指定的容量,文件只支持"+sizeByStr());
        filename = file.getFileName();
        BufferedInputStream in = null;
        BufferedOutputStream stream = null;
        try {

            if (file != null) {
                String type = getType(filename).toLowerCase(); // 上传的文件,并且转为小写
                if (!StringUtils.isEmpty(fileType)) {
                    if (!isFileType(type, fileType.toLowerCase())) {
                        throw new Exception("文件格式不正确");
                    }
                }
                uploadFileName=FileHelper.joinFile(fileName, type);

                in = new BufferedInputStream(file.getInputStream());

                if (!StringUtils.isEmpty(fileName)) {
                    fullpath=FileHelper.joinPath(path, uploadFileName);
                } else {
                    fullpath=FileHelper.joinPath(path, filename);
                }
                stream = new BufferedOutputStream(
                        new FileOutputStream(fullpath));
                int buf = 1024 * 6;
                byte[] bufByte = new byte[buf];
                while (in.read(bufByte) != -1) {
                    stream.write(bufByte);
                }
                stream.flush();
                stream.close();
                stream = null;
                in.close();
                in = null;
            } else {
                throw new IOException("上传的文件不存在");
            }
        } catch (Exception e) {
            // e.printStackTrace();
            throw new UploadException(e);
        } finally {
            if (stream != null) {
                stream.close();
                stream = null;
            }
            if (in != null) {
                in.close();
                in = null;
            }
        }
        System.gc();
    }

    
    /**
     * 用户只有设size大于0时才做判断
     * @return
     */
    boolean isFileSizeMax() {
        if (size > 0) {
            // log.info(file.getFileSize());
            if (file.getFileSize() > size) {
                return true;
            }
        }
        return false;
    }

    public String sizeByStr() {

        if (size < 1024 * 1024 && size > 0) {
            return ((int) ((int) (size / 1024 * 1000)) / 1000) + "k";
        } else if (size > 1024 * 1024 && size < 1024 * 1024 * 1024) {
            return ((int) ((int) (size / (1024 * 1024) * 1000)) / 1000) + "M";
        } else {
            return "0k";
        }
    }

    public String sizeByStr1() {// 重载sizeByStr方法

        if (size > 0 && size < 1024 * 1024 * 1024) {
            return "true";
        } else {
            return "false";
        }
    }

    public UploadFileImpl(String path, int size,String filetype, FormFile file) {
        super();
        /**
         * "jpg,gif"
         */
        // TODO Auto-generated constructor stub
        if(file==null||file.getFileSize()<1)
            throw new IllegalArgumentException("上传的文件不存在");
        this.path = path;
        this.size = size;
        this.fileType=filetype;
        this.file = file;
        
        MkDir md = new MkDir();
        md.mkDir(path);
        filesize=file.getFileSize();
    }

    public String getFilename() {
        // TODO Auto-generated method stub
        return filename;
    }

    public String getFullpath() {
        // TODO Auto-generated method stub
        return fullpath;
    }

    public String getUploadFileName() {
        // TODO Auto-generated method stub
        return uploadFileName;
    }
    private String uploadFileName;
    private String fullpath;
    private String filename;

    public int getFileSize() {
        // TODO Auto-generated method stub
        return filesize;
    }
}
  • 今天的任务

  1. 仍然是后台管理系统文件上传下载功能
posted @ 2019-05-07 09:05  符黑石  阅读(212)  评论(0编辑  收藏  举报