发布于 2016-07-14 13:07:39 | 158 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Java函数式编程,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


本文给大家介绍的是项目中经常需要用到的一个常用的功能,使用java实现文件的上传下载和图片的压缩功能,这里推荐给大家,有需要的小伙伴参考下。

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



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;

    }

}

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



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务