Docx to BLOB

Galera, tenho um código que grava e recupera arquivos .doc de um campo BLOB no oracle. Porém com docx ele grava e não recupera. A caixa de texto abre com um arquivo extensão .do (do struts).
Fiz um teste aqui, converti o mimetype do .docx para .zip, durante a gravação. Assim o sistema recupera um .zip, só tenho o trabalho de converte-lo novamente para .docx na mão.
Achei uns códigos na net para converter o .docx e salvar em formato zip, mas não dão certo.

ByteArrayOutputStream baos = null;
        byte[] buf = new byte[4000];
        InputStream inputStream = null;
        try {
            if (this.getRefDoc() != null) {
                baos = new ByteArrayOutputStream();
                inputStream = this.getRefDoc().getBinaryStream();
                int dataSize = 0;
                while ((dataSize = inputStream.read(buf)) > 0) {
                    baos.write(buf, 0, dataSize);
                }
                baos.flush();
                refDocByteArray = baos.toByteArray();
            }
        } catch (SQLException e) {

Código da net, mas dá erro …

ByteArrayOutputStream baos = null;
        byte[] buf = new byte[4000];
        InputStream inputStream = null;
        try {
            if (this.getRefDoc() != null) {
                baos = new ByteArrayOutputStream();
                inputStream = this.getRefDoc().getBinaryStream();
                Transformer t = TransformerFactory.newInstance().newTransformer();
                ByteArrayInputStream bais = new ByteArrayInputStream(inputStream.toString().getBytes());
                DocumentBuilderFactory docBuilderFac = DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder = docBuilderFac.newDocumentBuilder();
                [color=red]Document document = docBuilder.parse(inputStream);[/color]
                t.transform(new DOMSource(document), new StreamResult(baos));
                ZipEntry ze = new ZipEntry(title);
                buf = baos.toByteArray();
                ze.setSize(buf.length);
                ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(title));
                zos.putNextEntry(ze);
                zos.write(buf);
                zos.flush();
                zos.closeEntry();

                refDocByteArray = baos.toByteArray();
            }
        } catch (SQLException e) {

[12/15/10 22:40:41:546 PKT] 00000033 SystemErr R [Fatal Error] :1:1: Content is not allowed in prolog.
[12/15/10 22:40:46:466 PKT] 00000033 SystemOut O (BNK) 0 [WebContainer : 0] ERROR com.citco.banking.nxg.cbfn.domain.CbfnNews.toByteArrayZip(CbfnNews.java:226) - Exception Occurred
org.xml.sax.SAXParseException: Content is not allowed in prolog.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at com.citco.banking.nxg.cbfn.domain.CbfnNews.toByteArrayZip(CbfnNews.java:202)

Descobri!
adicionei isto no header

response.addHeader("Content-Disposition", "attachment; filename=" + newsForm.getNewsTitle()+ ".docx");