关闭

练手之作-公司点饭系统

标签: javaweb订饭系统-文件下载
183人阅读 评论(0) 收藏 举报
分类:

作为一个开发新手,公司的项目一直都帮不了大忙,所以就兼职了部门的内勤,每天统计订饭人数,别看是个小事情,但是每次都很麻烦,问来问去最后不是剩下就是不够,所以就加班写了一个小系统,内部点饭系统,现总结一下,开发过程中要感谢我的”同桌”和其他的同事,给我解答了一些问题。

1.使用poi生成Excel文件的时候,单元格强制换行:拼接字符串的时候要加上”\r\n”,注意斜杠不要写反了。

2.用流的方式下载Excel文件的时候如果是中文的文件名一定要编码,不然文件是可以下载的,但是命名很不好。
输出流的时候reponse要加上这两句代码

response.setContentType("application/octetstream,charset=utf-8");
response.addHeader("ContentDisposition","attachment;fileName=setmeal.xls");

我的下载Excel文件代码段

 String path=request.getSession().getServletContext().getRealPath("/")+"excel"+File.separator;
        String filepath=path+"setmeal.xls";
        exportExcel.outputExcel(filepath,request);//这句是自己写的excel导出的方法

        try {
             //filepath是指欲下载的文件的路径。 
            File file = new File(filepath);        
            response.setContentType("application/octet-stream,charset=utf-8");
            response.addHeader("Content-Disposition", "attachment;fileName=setmeal.xls");

            BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
            byte[] buf = new byte[1024];
            int len = 0;
                OutputStream out = response.getOutputStream();
                while ((len = br.read(buf)) > 0)
                    out.write(buf, 0, len);
                    br.close();
                    out.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  

3.用到了session,web.xml里面配置的session的过期时间为5分钟

    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>

4.用到了图片上传,因为要上传小票图片,用了公司项目里的压缩图片方法
压缩图片代码段

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.awt.image.ImageProducer;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

import com.sun.jimi.core.Jimi;
import com.sun.jimi.core.JimiException;
import com.sun.jimi.core.JimiWriter;
import com.sun.jimi.core.options.JPGOptions;
import com.twl.web.util.image.AnimatedGifEncoder;


public class ImageUtil {

    public static void toJPG(String source, String dest, int quality) {
        if (dest == null || dest.trim().equals(""))
            dest = source;

        if (!dest.toLowerCase().trim().endsWith("jpg")) {
            dest += ".jpg";
            System.out.println("Overriding to JPG, output file: " + dest);
        }
        if (quality < 0 || quality > 100 || (quality + "") == null
                || (quality + "").equals("")) {
            quality = 100;
        }
        try {
            JPGOptions options = new JPGOptions();
            options.setQuality(quality);
            ImageProducer image = Jimi.getImageProducer(source);
            JimiWriter writer = Jimi.createJimiWriter(dest);
            writer.setSource(image);

            writer.setOptions(options);

            writer.putImage(dest);
        } catch (JimiException je) {
            System.err.println("Error: " + je);
        }
    }

    // 2.图片压缩(修改图片长和宽)
    public static void resize(String source, String desc, int width, int height) {
        try {
            // 读入文件
            BufferedImage src = ImageIO.read(new File(source));
            Image image = src.getScaledInstance(width, height,
                    Image.SCALE_SMOOTH);
            BufferedImage tag = new BufferedImage(width, height,
                    BufferedImage.TYPE_3BYTE_BGR);
            Graphics g = tag.getGraphics();
            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
            g.dispose();
            ImageIO.write(tag, "JPEG", new File(desc));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 2.图片压缩(修改图片长和宽)
    public static void resize(String source, OutputStream output, int width, int height) {
        try {
            // 读入文件
            BufferedImage src = ImageIO.read(new File(source));
            Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);
            BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
            Graphics g = tag.getGraphics();
            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
            g.dispose();
            ImageIO.write(tag, "JPEG", output);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 3.图片裁剪
    public static void cut(String source, String desc, int x, int y, int width,
            int height) {
        try {

            FileInputStream is = new FileInputStream(source);

            Iterator<ImageReader> it = ImageIO
                    .getImageReadersByFormatName("jpg");
            ImageReader reader = it.next();
            ImageInputStream iis = ImageIO.createImageInputStream(is);

            reader.setInput(iis, true);

            ImageReadParam param = reader.getDefaultReadParam();

            Rectangle rect = new Rectangle(x, y, width, height);

            param.setSourceRegion(rect);

            BufferedImage bi = reader.read(0, param);

            ImageIO.write(bi, "jpg", new File(desc));
        } catch (FileNotFoundException e) {
            System.out.println("Can't find the image file: " + source);
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("Unable to get the input stream :" + source);
            e.printStackTrace();
        }
    }

    /**
     * @param source
     * @param dest
     * @throws JimiException
     */
    public static void toGIF(String source, String dest) throws JimiException {
        if (dest == null || dest.trim().equals(""))
            dest = source;
        // 1:转换为jpg
        if (!dest.toLowerCase().trim().endsWith("jpg")) {
            dest += ".jpg";
        }
        toJPG(source, dest, 75);

        BufferedImage file_in = null;
        File file = new File(dest);
        try {
            file_in = javax.imageio.ImageIO.read(file);
        } catch (Exception e) {
            e.printStackTrace();
        }

        int end = dest.lastIndexOf(".");
        file.deleteOnExit();
        // output *.gif
        file.renameTo(new File(dest.substring(0, end) + ".gif"));
        // jpg to gif
        AnimatedGifEncoder e = new AnimatedGifEncoder();
        e.start(dest);
        e.addFrame(file_in);
        e.finish();

        /*
         * //分解GIF: GifDecoder d = new GifDecoder(); d.read("sample.gif"); int n
         * = d.getFrameCount(); for(int i = 0; i < n; i++) { BufferedImage frame
         * = d.getFrame(i); // frame i int t = d.getDelay(i);
         * // display duration of frame in milliseconds
         * // do something with frame }
         * 
         * //合成GIF: AnimatedGifEncoder e = new AnimatedGifEncoder();
         * e.start(outputFileName); e.setDelay(1000); // 1 frame per sec
         * e.addFrame(image1); e.addFrame(image2); e.finish();
         */
    }

    /**
     * @param img
     * @param dest
     * @throws JimiException
     */
    public static void toTIF(Image img, String dest) throws JimiException {
        if (!dest.toLowerCase().trim().endsWith("tif")) {
            dest += ".tif";
            System.out.println("Overriding to TIF, output file: " + dest);
        }
        dest = dest.substring(0, dest.lastIndexOf(".")) + ".jpg";
        try {
            System.out.println("toTIF encode");
            JimiWriter writer = Jimi.createJimiWriter(dest);
            writer.setSource(img);
            dest = dest.substring(0, dest.lastIndexOf(".")) + ".tif";
            writer.putImage(dest);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 线性改变图片尺寸(可同时改变图片格式)
     * 
     * @param source
     *            源文件完整路径
     * @param desc
     *            目标文件完整路径
     * @param ins
     *            放大倍数(小于1则为缩小)
     * @throws JimiException
     * @throws IOException
     */
    public static void changeDimension(String source, String desc, double ins)
            throws JimiException, IOException {
        String temp = desc;
        File _file = null;
        if (desc == null || desc.trim().equals(""))
            desc = source;
        if (!desc.toLowerCase().trim().endsWith("jpg")) {
            temp = desc.trim() + ".jpg";
        }
        toJPG(source, temp, 75);
        _file = new File(temp); // 读入文件

        Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象
        double wideth = (double) src.getWidth(null); // 得到源图宽
        double height = (double) src.getHeight(null); // 得到源图高
        System.out.println("源图宽:" + wideth);
        System.out.println("源图高:" + height);

         //缩放处理
        int iWideth = (int) (wideth * ins); 
        int iHeight = (int) (height * ins);

        System.out.println("现图宽:" + iWideth);
        System.out.println("现图高:" + iHeight);
        System.out.println("缩放参数:" + ins);
        BufferedImage tag = null;
        try {
            tag = new BufferedImage(iWideth, iHeight,
                    BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图
            /*
             * //打水印 File _filebiao = new File("test2.jpg"); Image src_biao =
             * ImageIO.read(_filebiao); int wideth_biao =
             * 40;//src_biao.getWidth(null); int height_biao =
             * 40;//src_biao.getHeight(null);
             * tag.getGraphics().drawImage(src_biao
             * ,50,50,wideth_biao,height_biao,null);
             */
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (!temp.trim().equals(desc))
            _file.deleteOnExit();

        if (desc.toLowerCase().trim().endsWith("gif")) {
            System.out.println("the target type is gif!");
            AnimatedGifEncoder e = new AnimatedGifEncoder();
            e.start(desc);
            e.addFrame(tag);
            e.finish();
        } else if (desc.toLowerCase().trim().endsWith("tif")
                || desc.toLowerCase().trim().endsWith("tiff")) {
            System.out.println("the type is tif!");
            toTIF(tag, desc);
        } else {
            try {
                System.out.println("common type!");
                JimiWriter writer = Jimi.createJimiWriter(desc);
                writer.setSource(tag);
                writer.putImage(desc);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public static void transpic(String infile, int iWideth, int iHeight,
            String type) throws JimiException, IOException {
        String temp = infile;
        File _file = null;
        /*
         * if (outfile == null || outfile.trim().equals("")) outfile = infile;
         * if (!outfile.toLowerCase().trim().endsWith("jpg")) { temp =
         * outfile.trim() + ".jpg"; }
         */
        int index = infile.indexOf('.');
        if (index != -1 && "jpg".equals(infile.substring(index))) {
            toJPG(infile, temp, 75);
        }
        _file = new File(temp); // 读入文件

        Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象
        double wideth = (double) src.getWidth(null); // 得到源图宽
        double height = (double) src.getHeight(null); // 得到源图长
        System.out.println("源图宽:" + wideth);
        System.out.println("源图长:" + height);
        /*
         * //缩放处理 int iWideth = (int) (wideth * ins); int iHeight = (int)
         * (height * ins);
         */
        // int iWideth = 300;
        // int iHeight = 200;
        System.out.println("现图宽:" + iWideth);
        System.out.println("现图长:" + iHeight);
        String outfile = "";
        BufferedImage tag = null;
        try {
            tag = new BufferedImage(iWideth, iHeight,
                    BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图
            /*
             * //打水印 File _filebiao = new File("test2.jpg"); Image src_biao =
             * ImageIO.read(_filebiao); int wideth_biao =
             * 40;//src_biao.getWidth(null); int height_biao =
             * 40;//src_biao.getHeight(null);
             * tag.getGraphics().drawImage(src_biao
             * ,50,50,wideth_biao,height_biao,null);
             */
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (!temp.trim().equals(outfile))
            _file.deleteOnExit();

        if (outfile.toLowerCase().trim().endsWith("gif")) {
            System.out.println("the type is gif!");
            AnimatedGifEncoder e = new AnimatedGifEncoder();
            e.start(outfile);
            e.addFrame(tag);
            e.finish();
        } else if (outfile.toLowerCase().trim().endsWith("tif")
                || outfile.toLowerCase().trim().endsWith("tiff")) {
            System.out.println("the type is tif!");
            toTIF(tag, outfile);
        } else {
            try {
                System.out.println("common type!");
                JimiWriter writer = Jimi.createJimiWriter(outfile);
                writer.setSource(tag);
                writer.putImage(outfile);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        String dest = "E:\\desc.png";
        String source = "E:\\1431945665044.JPG";
//      int quality = 100;
        resize(source, dest, 256, 168);
    }

}

我的图片上传直接放在项目下,没有用图片服务器。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1128次
    • 积分:51
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类