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

📄 mimemultipartview.java

📁 封装了SQL、Socket、WAP、MIME等功能的通用组件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.lazybug.mime.view;

import java.io.*;

import javax.mail.MessagingException;

import org.lazybug.mime.*;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class MimeMultipartView
{
    //part最大限制
    public static final int MAX_MIME_PART_SIZE = 10;
    private MimeMultipart message;
    /*消息预览的当前编号*/
    private int pid;
    /*临时路径 */
    private String tempPath;
    /**/
    private boolean isHasMoreViewPart;
    /*M*/
    private MimePart myParts[] = new MimePart[MAX_MIME_PART_SIZE];

    /*通过路径构造View,但是不下载消息中的实体对象
    public MimeMultipartView()
    {
        this.message = new MimeMultipart();
    }*/

    /*通过路径构造View,但是不下载消息中的实体对象
    public MimeMultipartView(String path) throws IOException
    {
        File file = new File(path);
        FileInputStream input = new FileInputStream(file);
        this.message = new MimeMultipart(input);
    }*/
    /*通过路径构造View
    public MimeMultipartView(String path, String temp_path) throws IOException
    {
        File file = new File(path);
        FileInputStream input = new FileInputStream(file);
        this.message = new MimeMultipart(input);

        try
        {
            downloadFileFromEntry( this.message ,temp_path);
        }
        catch(MessagingException e )
        {
        }
        finally
        {
            input.close();
        }
    }*/
    /*直接通过part构造View*/
    public MimeMultipartView(MimeMultipart part, String path)
    {
        this.message = part;
        this.tempPath = path;
        initialize();
    }

    public void initialize()
    {
        this.pid = -1;
        isHasMoreViewPart = false;

        setPart(this.message);
    }

    private void setPart(MimeMultipartEntry part)
    {
        MimeMultipartEntry entries[] = part.getMultipartEntries();
        if( entries.length == 0 )
        {
            myParts[part.getMimei()] = part;
        }
        else
        {
            for(int i = 0; i < entries.length; i++ )
            {
                setPart(entries[i]);
            }
        }
    }
    /**
     * 得到消息的MessageId
     * @return String
     */
    public String getMessageId()
    {
        if( this.message != null ) return this.message.getMessageId();
        return null;
    }
    /**
     * 是否有下一个文件part
     */
    public boolean hasMoreImgOrTxtPart()
    {
        return isHasMoreViewPart;
    }

    public MimePart goForwardPart()
    {
        for( int i = this.pid + 1; i < this.message.getMimei(); i++ )
        {
            if( myParts[i] == null ) continue;
            if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("image") )
            {
                if( myParts[i].isExistTempFile() )
                {
                    this.pid = i;
                    return myParts[i];
                }
                if( this.tempPath == null ) return null;
                try
                {
                    MimeMultipartEntry.setFilePart( myParts[i], tempPath);
                    this.pid = i;
                    return myParts[i];
                }
                catch( Exception e )
                {
                    e.printStackTrace();
                }
            }
            else if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("text") )
            {
                this.pid = i;
                return myParts[i];
            }
        }
        //System.out.println("pid="+this.pid);
        if( pid >= 0 ) return myParts[this.pid];
        return null;
    }

    public MimePart goBackPart()
    {
        //System.out.println("pid="+this.pid);
        for( int i = this.pid - 1; i >= 0; i-- )
        {
            if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("image") )
            {
                if( myParts[i].isExistTempFile() )
                {
                    this.pid = i;
                    return myParts[i];
                }
                if( this.tempPath == null ) return null;
                try
                {
                    MimeMultipartEntry.setFilePart( myParts[i], tempPath);
                    this.pid = i;
                    return myParts[i];
                }
                catch( Exception e )
                {
                    e.printStackTrace();
                }
            }
            else if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("text") )
            {
                this.pid = i;
                return myParts[i];
            }
        }
        if( pid >= 0 ) return myParts[this.pid];
        return null;
    }
    /**
     * 去下一个图片或者文字帧
     *
    public MimePart goToNextImgOrTxtPart()
    {
        this.isHasMoreViewPart = false;
        MimeMultipartEntry entries[] = this.message.getMultipartEntries();

        MimePart part = null;
        if( entries.length > 0 )
        {
            try{

                for( int i = 0; i < entries.length; i++ )
                {
                    if( part == null )
                    {
                        part = goToNextImgOrTxtPart( entries[i] );
                        this.pid = part.getMimei();
                    }
                    else if( goToNextImgOrTxtPart( entries[i] ) != null )
                    {
                        this.isHasMoreViewPart = true;
                        break;
                    }
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
        return null;
    }*/
    /*
     *去下一个图片或者文字部件
     *
    private MimePart goToNextImgOrTxtPart(MimeMultipartEntry entry)
        throws IOException, MessagingException
    {
        if( entry.getMimei() <= this.pid ) return null;


        MimeMultipartEntry entries[] = entry.getMultipartEntries();
        if( entries.length == 0 )
        {
            if( entry.getContentType().getPrimaryType().equalsIgnoreCase("image") )
            {
                if( entry.isExistTempFile() ) return entry;
                if( this.tempPath == null ) return null;
                MimeMultipartEntry.setFilePart(entry, tempPath,
                    Long.toHexString(System.currentTimeMillis()>>16));
                return entry;
            }
            else if( entry.getContentType().getPrimaryType().equalsIgnoreCase("text") )
            {
                return entry;
            }
        }
        else
        {
            for(int i = 0; i < entries.length; i++ )
            {
                if( goToNextImgOrTxtPart(entries[i]) != null )
                    return entries[i];
            }
        }
        return null;
    }*/

    public static String getTextPartContent(MimePart part)
    {
        if( !part.getContentType().getPrimaryType().equals("text") ) return null;

        String content = null;
        try{
            String encoding = part.getEncoding();
            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];
                i = in1.read( buf, 0, k );
            }
            else
            {
                buf = part.getPayload();
                i = buf.length;
            }
//com.kehaoinfo.util.Tools.printb(buf, 0, i);
            String charset = part.getContentType().getParameter( "charset" );
            if( charset != null )
            {
                content = new String( buf, 0, i, charset );
            }
            else
            {
                content = new String(buf, 0, i);
            }
        }
        catch(Exception e){
            content = "";
            e.printStackTrace();
        }
        return content;
    }
    /*从Multipart实体中下载文件*/
    public static void downloadFileFromEntry(MimeMultipartEntry entry, String path)
        throws IOException, MessagingException
    {
        MimeMultipartEntry entries[] = entry.getMultipartEntries();
        //System.out.println("MIMEI:"+entry.mimei+" entries-length="+entries.length);

⌨️ 快捷键说明

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