博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一阶段SCRUM冲刺 09
阅读量:5338 次
发布时间:2019-06-15

本文共 5977 字,大约阅读时间需要 19 分钟。

编程接近尾声了,因为自己的资料上传一直实现不了格式的限制,小组成员决定放弃,进行团队成员代码的整合工作。

昨天的成就:可以上传资料至平台,但是只是针对部分文件。

遇到的难题:上传文件的格式限制;

今天的任务:再尝试一下上传功能的实现;团队成员代码整合;发布任务看板。

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; }}

 

转载于:https://www.cnblogs.com/Qi77/p/11067587.html

你可能感兴趣的文章
Kafka TimeoutException: Batch Expired 问题排查
查看>>
大小端以及字节序的问题
查看>>
python中set()函数的用法
查看>>
不小心踩到的XMAPP的N种问题
查看>>
正经学C#_位移与其位移运算符[c#入门经典]
查看>>
spring 读取yaml配置文件
查看>>
Android Studio安装及主题字体配置
查看>>
当梦想照进现实
查看>>
Java 遍历指定文件夹及子文件夹下的文件
查看>>
PowerShell过滤文件中的重复内容
查看>>
福大软工 · 第十二次作业 - Beta答辩总结之拖鞋旅游队
查看>>
android 开发 文件打开为自己开发app操作步骤代码
查看>>
XML与反射
查看>>
视频剪辑软件调研
查看>>
5 行内元素和块级元素
查看>>
[开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库
查看>>
设计模式学习笔记(一)——抽象工厂模式
查看>>
是否是闰年
查看>>
PAT 1038. Recover the Smallest Number
查看>>
解决can't connect to redis-server
查看>>