读取从servlet下载的.msg文件时出错

时间:2013-04-29 10:46:37

标签: servlets outlook outputstream msg

我编写了一个servlet,它使用msgparser读取outlook .msg文件,并将内容写入ServletOutputStream,以便在网址被命中后可以下载。

我遇到的问题是,当我尝试在Outlook中打开下载的文件时,该文件报告错误。

错误说:无法打开文件,因为它可能不存在,或者您可能无权访问文件......

即使文件格式正确(.msg),也会出现此类错误。我确信在解析时我做错了什么。请建议。下面是servlet代码:

MsgParser msgp = new MsgParser(); 

    Message msg = msgp.parseMsg("D:\\Demo.msg");

    String str1=msg.toString(); 

    byte[] b=str1.getBytes();// here b is byte array 

    //The below code is to open show the pop up so that user can save the msg file.. 

    response.setContentType("application/vnd.ms-outlook"+" ;charset=utf-8"); 

    response.setHeader("Content-Disposition","attachment;filename=" + "Demo.msg"); 

    ServletOutputStream servletOutputStream = response.getOutputStream(); 


    DataOutput dataOutput = new DataOutputStream(servletOutputStream); 

    if (b!= null) { 
        response.setContentLength(b.length); 

        for (int i = 0; i < b.length; i++) { 
            dataOutput.writeByte(b[i]); 
        } 

    } 
    if (servletOutputStream != null) { 

        servletOutputStream.flush(); 

        servletOutputStream.close(); 
    } 
    PrintWriter pw = response.getWriter();
    pw.println(dataOutput);

1 个答案:

答案 0 :(得分:0)

如果可能,将字段PR_RTF_IN_SYNC设置为FALSE:

message.setRtfInSync(假);

我不使用msgparse,但是使用另一个库(JMSG)可以设置此字段,并且应修复问题“无法打开文件,因为它可能不存在或者您可能没有访问文件的权限”