首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java1.4中的ByteArrayDataSource类

Java1.4中的ByteArrayDataSource类
EN

Stack Overflow用户
提问于 2012-07-20 17:26:24
回答 2查看 1.5K关注 0票数 0

我需要使用这个类ByteArrayDataSource来发送一个带有附件的电子邮件(一个用iText创建的pdf ),但是我们的环境是在Java1.4上运行的,但是这个类是在Javamail中需要更高的版本。

我必须使用这个类,如下所示:

代码语言:javascript
复制
//now write the PDF content to the output stream   
    outputStream = new ByteArrayOutputStream();
    pdfCreator.createPdf(data,outputStream);
    byte[] bytes = outputStream.toByteArray();


    //construct the pdf body part
    DataSource dataSource = **new ByteArrayDataSource**(bytes, "application/pdf");
    MimeBodyPart pdfBodyPart = new MimeBodyPart();
    pdfBodyPart.setDataHandler(new DataHandler(dataSource));
    pdfBodyPart.setFileName("listadosCitaciones.pdf");

    multipart.addBodyPart(messageBodyPart);

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-20 17:48:17

你应该能够自己从头开始实现一个等价的类。查看DataSource接口中的方法的javadoc,您需要如何实现它们应该是显而易见的。

(我会为你做的,但我已经为这周写了足够多无聊的代码:-)

票数 0
EN

Stack Overflow用户

发布于 2012-07-20 18:29:28

Stephen是对的,您只需要实现一个自定义数据源,如下所示:

代码语言:javascript
复制
public class ByteArrayDataSource implements DataSource {
    public ByteArrayDataSource(byte[] b, String ct) {
        bytes = b;
        contentType = ct;
    }

    public String getContentType() {
        return contentType;
    }

    public InputStream getInputStream() throws IOException {
        return new ByteArrayInputStream(bytes);
    }

    public String getName() {
        return null;
    }

    public OutputStream getOutputStream() {
        throw new UnsupportedOperationException();
    }

    private byte[] bytes;
    private String contentType;
}

然后你可以像使用jdk1.5 ByteArrayDataSource一样使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11576578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档