⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mimemultipartentry.java

📁 封装了SQL、Socket、WAP、MIME等功能的通用组件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            }
            else
            {
                try{
                    OutputStream o = MimeUtility.encode( out, encoding );
                    o.write( this.content );
                    //o.flush();
                    //o.close();
                }
                catch(Exception e){
                    throw new IOException("Failed to encode by "+encoding);
                }
            }
            out.write(0x0d);
            out.write(0x0a);
        }
        else
        {
            for( int i = 0; i < entries.length; i++ )
            {
                entries[i].writeTo( out );
            }
        }

        if( entries.length > 0 )
        {
            out.write( ("--" + this.getBoundary() + "--").getBytes() );
            out.write(0x0d);
            out.write(0x0a);
        }
        //}
        //catch( MessagingException e )
        //{
         //   throw new MimeException("Failed write data to out.");
        //}
        //finally
        //{
        //    writer.close();
        //}
    }

    public static void setFilePart(MimePart part, String path)
        throws IOException, MessagingException
    {
        ByteArrayInputStream in = new ByteArrayInputStream(part.getPayload());
        String encoding = part.getEncoding();
        byte buf[] = null;
        int i = 0;
        if( encoding != null )
        {
            InputStream in1 = MimeUtility.decode(in, encoding);
            buf = new byte[in1.available()];
            i = in1.read(buf, 0, in1.available());
        }
        else
        {
            buf = part.getPayload();
            i = buf.length;
        }
        part.setReleayFileName();
        part.setFilepath(path);
        String f = part.getPath();
        if( f == null ) return;
        File file = new File(f);
        //System.out.println("part.getFileName()="+file.getPath());
        //System.out.println("buf-size="+buf.length+","+i);
        //com.kehaoinfo.util.Tools.printb(buf, 0, 16);
        try
        {
            FileOutputStream out = new FileOutputStream(file);
            out.write(buf, 0, i);
        }
        catch(Exception e)
        {
        }
    }
    /**
     * 单元测试用例——测处理图片的情况
     * @param part MimeBodyPart
     * @throws IOException
     * @throws MessagingException
     */
    /*public static void setFilePart(MimePart part, String path)
        throws IOException, MessagingException
    {
        //System.out.println("[");
        setFilePart(part, path, null);
        //System.out.println("]");
    }*/

    public static void setTextPart(MimePart part, String path)
        throws IOException, MessagingException
    {
        if( part.isExistTempFile() ) return;//如果存在临时文件就直接返回

        String encoding = part.getEncoding();
        String charset = part.getContentType().getParameter("charset");
        byte buf[] = null;
        int i = 0;
        if( encoding != null )
        {
            ByteArrayInputStream in = new ByteArrayInputStream(part.getPayload());
            InputStream in1 = MimeUtility.decode(in, encoding);
            int k = in1.available();
            buf = new byte[k];
            //System.out.println("k="+k);
            i = in1.read(buf, 0, k);
            //System.out.println("i="+i);
            if( charset != null )
            {
                String s = new String(buf, 0, i, charset);
                buf = s.getBytes();
                i = buf.length;
            }
        }
        else
        {
            //System.out.println("charset["+charset+"]\r\n"+new String(buf, charset));
            //String s = new String(buf, charset);
            //buf = s.getBytes();
            buf = part.getPayload();
            i = buf.length;
        }

        part.setReleayFileName();
        part.setFilepath(path);
        String f = part.getPath();
        if( f == null ) return;
        File file = new File(f);
        //System.out.println("part.getFileName()="+part.getFileName());
        try
        {
            FileOutputStream out = new FileOutputStream( file );
            out.write( buf, 0, i );
            part.setFilepath(path);
        }
        catch(Exception e)
        {
        }
    }
    /**
     * 单元测试用例——测处理文本的情况
     * @param part MimeBodyPart
     * @throws IOException
     * @throws MessagingException
     */
    /*public static void setTextPart(MimePart part, String path)
        throws IOException, MessagingException
    {
        setTextPart(part, path, null);
    }*/

    static void _testNoBoundaryMime()
    {
        File file = new File("D:\\work\\project\\isms_unicom\\proxy\\multipart_1.txt");
        try
        {
            FileInputStream in = new FileInputStream(file);
            MimeMultipartEntry mimebodypart = new MimeMultipartEntry(in);
            //System.out.println(mimebodypart);
            //System.out.println(mimebodypart.getContentType());

            if( mimebodypart.getContentType().getPrimaryType().equalsIgnoreCase("text"))
            {
                setTextPart(mimebodypart, "D:\\work\\project\\isms_unicom\\proxy\\");
            }
            else if( mimebodypart.getContentType().getPrimaryType().equalsIgnoreCase("image"))
            {
                setFilePart(mimebodypart, "D:\\work\\project\\isms_unicom\\proxy\\");
            }
        }
        catch( FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch( IOException e)
        {
            e.printStackTrace();
        }
        catch( Exception e)
        {
            e.printStackTrace();
        }
    }

    static void _testBoundaryMime()
    {
        File file = new File("D:\\work\\project\\isms_unicom\\favorite\\1175610b8a84.mp");
        try
        {
            FileInputStream in = new FileInputStream(file);
            MimeMultipartEntry part = new MimeMultipartEntry(in);
            //System.out.println(part.getHeader("Subject"));
            //System.out.println(part.getMultipartEntryByIndex(0));
            //System.out.println(mimebodypart.getContentType());
            MimeMultipartEntry entries[] = part.getMultipartEntries();
//System.out.println("entries="+entries.length);
            for(int i = 0; i < entries.length; i++ )
            {
                String type = entries[i].getContentType().getPrimaryType();
//System.out.println("type="+type);
                if( type.equalsIgnoreCase("text"))
                {
                    setTextPart(entries[i], "D:\\work\\project\\isms_unicom\\temp\\");
                    //System.out.println(MimeMultipartView.getTextPartContent(entries[i]));
                }
                else if( type.equalsIgnoreCase("image"))
                {
//System.out.println("sdfsadfsdfdsf="+type);
                    setFilePart(entries[i], "D:\\work\\project\\isms_unicom\\temp\\");
                }
                else
                {
                     MimeMultipartEntry e[] = entries[i].getMultipartEntries();
                     for( int k = 0; k < e.length; k++ )
                     {
                         if( e[i].getContentType().getPrimaryType().equalsIgnoreCase("text"))
                         {
                             setTextPart(e[k], "D:\\work\\project\\isms_unicom\\temp\\");
                         }
                         else if( e[i].getContentType().getPrimaryType().equalsIgnoreCase("image"))
                         {
                             setFilePart(e[k], "D:\\work\\project\\isms_unicom\\temp\\");
                         }
                     }
                }
            }
        }
        catch( FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch( IOException e)
        {
            e.printStackTrace();
        }
        catch( Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void _testEncod()
    {
        try
        {
            File file = new File("D:\\work\\project\\isms_unicom\\google.html");
            FileInputStream in = new FileInputStream(file);
            byte buf[] = new byte[in.available()];
            in.read(buf);

            MimeMultipartEntry part = new MimeMultipartEntry();
            part.setContentType("multipart/related");

            MimeMultipartEntry _part = new MimeMultipartEntry();
            _part.setContentType("multipart/alternative");

            MimeMultipartEntry part1= new MimeMultipartEntry();
            part1.setContentType("text/plain");
            part1.getContentType().setParameter("charset", "gb2312");
            part1.getContentType().setParameter("name", "abcc");
            part1.getContentType().setParameter("path", "D:\\work\\project\\isms_unicom\\proxy\\");
            part1.setContent("ABCD123".getBytes(), "7bit");
            _part.addMultipartEntry(part1);

            MimeMultipartEntry part2 = new MimeMultipartEntry();
            part2.setContentType("text/html");
            part2.getContentType().setParameter("charset", "gb2312");
            part2.getContentType().setParameter("name", "google");
            part2.getContentType().setParameter("filename", "google.html");
            part2.getContentType().setParameter("path", "D:\\work\\project\\isms_unicom\\proxy\\");
            part2.setContent(buf, "quoted-printable");
            _part.addMultipartEntry(part2);

            part.addMultipartEntry(_part);
            FileInputStream in1 = new FileInputStream(
                "D:\\work\\project\\isms_unicom\\proxy\\15065421.jpg");
            buf = new byte[in1.available()];
            in1.read(buf);
            MimeMultipartEntry part3 = new MimeMultipartEntry();
            part3.setContentType("image/jpg");
            part3.getContentType().setParameter("name", "裸体");
            part3.getContentType().setParameter("path", "D:\\work\\project\\isms_unicom\\proxy\\");
            part3.setContent(buf, "base64");
            part.addMultipartEntry(part3);

            FileInputStream in2 = new FileInputStream(
                "D:\\work\\project\\isms_unicom\\proxy\\10_0P6Xiw4UKvWW.jpg");
            buf = new byte[in2.available()];
            in2.read(buf);
            MimeMultipartEntry part4 = new MimeMultipartEntry();
            part4.setContentType("image/jpg");
            part4.setContent(buf, "base64");
            part.addMultipartEntry(part4);

            FileOutputStream out = new FileOutputStream(
                "D:\\work\\project\\isms_unicom\\proxy\\1.mp");
            part.writeTo(out);
        }
        catch( Exception e )
        {
            e.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        //_testEncod();
        _testBoundaryMime();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -