当前位置: 移动技术网 > IT编程>开发语言>Java > java实现文件上传下载和图片压缩代码示例

java实现文件上传下载和图片压缩代码示例

2019年07月22日  | 移动技术网IT编程  | 我要评论

分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:)

复制代码 代码如下:

package com.eabax.plugin.yundada.utils;
import java.awt.image.bufferedimage;
import java.io.file;
import java.io.ioexception;
import java.text.simpledateformat;
import java.util.date;
import java.util.list;
import java.util.uuid;
import javax.imageio.imageio;
import javax.servlet.http.httpservletrequest;
import net.coobird.thumbnailator.thumbnails;
import org.apache.commons.fileupload.fileitem;
import org.apache.commons.fileupload.disk.diskfileitemfactory;
import org.apache.commons.fileupload.servlet.servletfileupload;
import org.json.jsonobject;
import org.slf4j.logger;
import org.slf4j.loggerfactory;
import com.eabax.plugin.yundada.gacontext;
public class fileuploaddownloadutil {
    private static final logger log = loggerfactory.getlogger(fileuploaddownloadutil.class);
    /**
     * 上传文件到服务器
     * @param request
     * @param type
     * @return
     * @throws exception
     */
    public static string upload(httpservletrequest request, string type) throws exception {
        boolean ismultipart = servletfileupload.ismultipartcontent(request);
        string savefilename = null;
        if (ismultipart) {
            string savepath = request.getsession().getservletcontext()
                    .getrealpath("/")
                    + "/upload/";
            string temppath = request.getsession().getservletcontext()
                    .getrealpath("/")
                    + "/upload/temp/";
            file savefile = new file(savepath);
            file tempfile = new file(temppath);
            if (!savefile.isdirectory())
                savefile.mkdirs();
            if (!tempfile.isdirectory())
                tempfile.mkdirs();
            diskfileitemfactory factory = new diskfileitemfactory();
            factory.setsizethreshold(1024 * 4);
            factory.setrepository(tempfile);
            servletfileupload uploader = new servletfileupload(factory);
            uploader.setsizemax(20 * 1024 * 1024);
            list<fileitem> fileitems = uploader.parserequest(request);
            for (fileitem item : fileitems) {
                if (item.isformfield()) {
                    // funname=item.getstring();
                } else {
                    // string filename=item.getname();
                    // string
                    // fix=filename.substring(filename.lastindexof(".")+1);
                    string fix = type;
                    date nowdate = new date();
                    simpledateformat sdf = new simpledateformat(
                            "yyyymmddhhmmss");
                    string filename = sdf.format(nowdate);
                    filename += system.currenttimemillis();
                    filename += "." + fix;
                    savefilename = "/upload/" + filename;
                    file file = new file(savepath + filename);
                    item.write(file);
                }
            }
        }
        return savefilename;
    }
    /**
     * 上传头像
     * @param request
     * @param type
     * @return
     * @throws exception
     */
    public static string uploadheadshow(httpservletrequest request,gacontext context, string type) throws exception {
        boolean ismultipart = servletfileupload.ismultipartcontent(request);
        string savefilename = null;
        string imagepath = "/upload/headshow/";
        string x = request.getparameter("length");
        string y = request.getparameter("wide");
        if (ismultipart) {
            string headshowservicepath = request.getsession().getservletcontext()
                    .getrealpath("/")
                    + imagepath;
            date nowdate = new date();
            simpledateformat sdf = new simpledateformat(
                    "yyyymmddhhmmss");
            string filename = context.getusername()+sdf.format(nowdate);
            file headshowfile = new file(headshowservicepath);
            if (!headshowfile.isdirectory())
                headshowfile.mkdirs();
            diskfileitemfactory factory = new diskfileitemfactory();
            factory.setsizethreshold(1024 * 4);
            factory.setrepository(headshowfile);
            servletfileupload uploader = new servletfileupload(factory);
            uploader.setsizemax(20 * 1024 * 1024);
            list<fileitem> fileitems = uploader.parserequest(request);
            for (fileitem item : fileitems) {
                if (item.isformfield()) {
                    // funname=item.getstring();
                } else {
                    string fix = type;
                    filename += "." + fix;
                    savefilename = imagepath + filename;
                    file file = new file(headshowservicepath + filename);
                    item.write(file);
                }
            }
            //压缩图片
            if(x!=null&&!"".equals(x) && y!=null&&!"".equals(y)) {
                savefilename = thumbnailatorimage(imagepath, filename, type, integer.parseint(x), integer.parseint(y));
            }
        }
        return savefilename;
    }
    /**
     * 上传分享图片
     * @param request
     * @param type
     * @return
     * @throws exception
     */
    public static jsonobject uploadarticleimage(httpservletrequest request,gacontext context, string type) throws exception {
        boolean ismultipart = servletfileupload.ismultipartcontent(request);
        jsonobject savefilename = new jsonobject();
        string imagepath = "";
        string x = request.getparameter("length");
        string y = request.getparameter("wide");
        if("4".equals(type)) {
            //分享上传图片路径
            imagepath = "/upload/articleimage/";
        }else if("5".equals(type)) {
            //链接上传图片路径
            imagepath = "/upload/linkimage/";
        } else {
            //头像上传图片路径
            imagepath = "/upload/headshow/";
        }
        if (ismultipart) {
            string headshowservicepath = request.getsession().getservletcontext()
                    .getrealpath("/")
                    + imagepath;
            file headshowfile = new file(headshowservicepath);
            if (!headshowfile.isdirectory())
                headshowfile.mkdirs();
            diskfileitemfactory factory = new diskfileitemfactory();
            factory.setsizethreshold(1024 * 4);
            factory.setrepository(headshowfile);
            servletfileupload uploader = new servletfileupload(factory);
            uploader.setsizemax(20 * 1024 * 1024);
            list<fileitem> fileitems = uploader.parserequest(request);
            for (fileitem item : fileitems) {
                uuid uuid = uuid.randomuuid();
                string filename = uuid.tostring();
                if (item.isformfield()) {
                    // funname=item.getstring();
                } else {
                    string fix = type;
                    filename += "." + fix;
                    savefilename.put( uuid.tostring(),imagepath + filename);
                    file file = new file(headshowservicepath + filename);
                    item.write(file);
                }
                //压缩图片
                if(x!=null&&!"".equals(x) && y!=null&&!"".equals(y)) {
                    string thumbnailatorname = thumbnailatorimage(imagepath, filename, type, integer.parseint(x), integer.parseint(y));
                    savefilename.put("thumbnailatorimage", thumbnailatorname);
                }
            }
        }
        return savefilename;
    }
    /**
     * 上传压缩压缩并保存图片
     * @param oldsavepath 原文件路径
     * @param oldfilename 原文件名称
     * @param fix 文件类型
     * @param x 需要压缩的宽度
     * @param y 需要压缩的长度
     * @return
     * @throws ioexception
     */
    public static string thumbnailatorimage(string oldsavepath,string oldfilename,string fix,int x,int y) throws ioexception {
         //thumbnail读取并压缩图片
        bufferedimage watermarkbufferedimage = thumbnails.of(oldsavepath+oldfilename) 
                //thumbnail的方法,压缩图片
                .size(x, y)
                //读取成bufferedimage对象 
                .asbufferedimage(); 
        //把内存中的图片写入到指定的文件中 
        string savepath = oldsavepath+x+"-"+y+"/";
        file savefile = new file(savepath);
        if (!savefile.isdirectory())
            savefile.mkdirs();
        diskfileitemfactory factory = new diskfileitemfactory();
        factory.setsizethreshold(1024 * 4);
        factory.setrepository(savefile);
        servletfileupload uploader = new servletfileupload(factory);
        uploader.setsizemax(20 * 1024 * 1024);
        uuid uuid = uuid.randomuuid();
        string filename = uuid.tostring();
        filename += "." + fix;
        string savefilename = savepath+filename;
        file fileoutput = new file(savefilename); 
        imageio.write(watermarkbufferedimage, fix, fileoutput);
        return savefilename;
    }
    /**
     * 下载压缩压缩并保存图片
     * @param oldsavepath 原文件路径
     * @param oldfilename 原文件名称
     * @param fix 文件类型
     * @param x 需要压缩的宽度
     * @param y 需要压缩的长度
     * @return
     * @throws ioexception
     */
    public static string downloadthumbnailatorimage(string servicepath,string uri,int x,int y) throws ioexception {
        //校验图片是否存在
        string urisubpath = uri.substring(0, uri.lastindexof("/")+1);//文件名以前,服务器以后
        string filename = uri.substring(uri.lastindexof("/")+1,uri.length());//文件名
        string getthumbnailatorpath = servicepath + urisubpath+x+"-"+y+"/";
        string savefilename = getthumbnailatorpath+filename;
        file downfilepath = new file(getthumbnailatorpath);//压缩以后的文件夹
        file downfile = new file(savefilename);//压缩以后的文件
        if (downfilepath.isdirectory()&&downfile.exists()) {
            return savefilename;
        } else {
         //thumbnail读取并压缩图片
            log.error(servicepath+uri);
            bufferedimage watermarkbufferedimage = thumbnails.of(servicepath+uri) 
                    //thumbnail的方法,压缩图片
                    .size(x, y)
                    //读取成bufferedimage对象 
                    .asbufferedimage();
            if (!downfilepath.isdirectory()) {
                downfilepath.mkdirs();
            }
            diskfileitemfactory factory = new diskfileitemfactory();
            factory.setsizethreshold(1024 * 4);
            factory.setrepository(downfilepath);
            servletfileupload uploader = new servletfileupload(factory);
            uploader.setsizemax(20 * 1024 * 1024);
            file fileoutput = new file(savefilename); 
            imageio.write(watermarkbufferedimage, "jpg", fileoutput);
        }
        return savefilename;
    }
}

以上就是本文分享的所有内容了,希望对大家能有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网