Как сохранить вложения из MS Access 2007 с помощью Java?

1

У меня есть таблица в Access, где я храню id своей задачи и вложения (файл docx). Приложение имеет тип данных "Приложение". Мне нужно сохранить это приложение в дисковое пространство, используя java (каждый файл в собственном каталоге). Когда я экспортирую эту таблицу в XML, я вижу таких, как это

<Findings>
<id>265</id>
<Finding>
<FileData>FgAAAAEAAAAFAAAAZABvAGMAeAAAAFBLAwQUAAYACAAAACEACSSHgoEBAACOBQAA
EwAIAltDb250ZW50X1R5cGVzXS54bWwgogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAtJRNT4NAEIbvJv4HslcD23owxpT2oPWoTazxvC5D2ch+
ZGf79e8dSkuqoaVavZDAMu/7zAszg9FKl9ECPCprUtZPeiwCI22mzCxlr9PH+JZF
GITJRGkNpGwNyEbDy4vBdO0AI6o2mLIiBHfHOcoCtMDEOjB0kluvRaBbP+NOyA8x
A37d691waU0AE+JQabDh4AFyMS9DNF7R45rEQ4ksuq9frLxSJpwrlRSBSPnCZN9c
4q1DQpWbd7BQDq8Ig/FWh+rksMG27pmi8SqDaCJ8eBKaMPjS+oxnVs419ZAcl2nh
tHmuJDT1lZrzVgIiZa7LpDnRQpkd/0EODOsS8O8pat0T7d9UKMZ5DpI+dnceGuOq
6aS22KvtdoMQKKRTTL7+gnFX6LhV7kRYwvvLv1HsiXeC5DQaU/FewgmJ/zCMRroT
ItC8A99c+2dzbGSOWdJkTLx1SPvD/6Lt3YKoqmMaOQc+KGhWRNuINY60e87uD6rt
lkHW4s0323T4CQAA//8DAFBLAwQUAAYACAAAACEAHpEat/MAAABOAgAACwAIAl9y
ZWxzLy5yZWxzIKIEAiigAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AIyS20oDQQyG7wXfYch9N9sKItLZ3kihdyLrA4SZ7AF3Dsyk2r69oyC6UNte5vTn
y0/Wm4Ob1DunPAavYVnVoNibYEffa3htt4sHUFnIW5qCZw1HzrBpbm/WLzyRlKE8
jDGrouKzhkEkPiJmM7CjXIXIvlS6kBxJCVOPkcwb9Yyrur7H9FcDmpmm2lkNaWfv
QLXHWDZf1g5dNxp+Cmbv2MuJFcgHYW/ZLmIqbEnGco1qKfUsGmwwzyWdkWKsCjbg
aaLV9UT/X4uOhSwJoQmJz/N8dZwDWl4PdNmiecevOx8hWSwWfXv7Q4OzL2g+AQAA
//8DAFBLAwQUAAYACAAAACEAfDuXOSIBAAC5AwAAHAAIAXdvcmQvX3JlbHMvZG9j
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
zaKe6ujN+c8/ne1STY1BMz1CCKlTUWbR2pg2jWNdrqkg+ki1VKKyViCIwSs0sSCw
6dpxqURLDCsYZ6aPj5PkNBpgVBZ1INMBYixYCUqr2liXVNU1K+nwL3jAt8T1npeq
7ASVxkWMgXLMQUm9Zq0OaOL/ouET1wFk+9IjtoIHu90keclyeO5OQbX3+Jb0rEML
qqRaI0GC++cKwuQeZjJ7ArQv9RGWOvaxYwuF7pPEnQ6Za/7E/xm2PYtLVgABTzM2
gM1ClOlNIxWQgmNT7Saz6Bw76kEpMdqlLYUSScJ2nCRRbBWV+lOZS6ZbTvo70tC3
qsOOBEb1oPa03oEytLSUIgqtGEIAJdWt5H1kJRI7saS2ARDbSkroW4NeW1ZRuO9b
zAU0WXQcGRq0F7xRwMxazDnRGh9NNNL8tdL7GkS4kC6WQ9775qzKotneLW+ZnOMT
bBqJ/bMaC5xF/8j8r0/X643Ot7O/l8f86nou46v1w8dXOI9opQlHLz37/KW/JTe/
T/+o4uUVLOumv7jIsqFatCYdN/ekyI1q0WlLkK1fk9deXa4JkNJQyFtSYn/MlTSg
eLBztZ7jfAK2z+DhptUS4ec295OPHpIIrJmXDtO8UhW1mXbAnrTIf7aYdXBZYic4
Sp8PpHBTAXKFT+M0Nz2nC0w+Zw9Y9updpw3D/eBm+jsyeCkBKm3kW9xrlvEFJabD
Mv2gYI6JBWftigEouJEVdu73BosDiZZOXPuVDof3SplAQ5KczE/nl0PHWLNHmmQ2
mU59lb7S7H0wyoAtUrsY7+D8zJ8sYSPhyZ4TUQAjo5VdnUi7SAvYvGUy6AuKA0sf
a/KuCMrx2Cu0IJwvsKODwu0MkVa4Li5p7WD5ikBzwB0s4FlpRet3eyy7hyhcgepa
H20HpPVEhHCT2WzAY9IsmQhy3RV58JK4/h6pcHndbsECxofy7FKDX03X0Esim1Bv
6MbvP1hT5I1Dbr+sdEVa3CDWpGgmWcRZszZunxm84V7cuEvRHA+6Y9ugBm9W5y6k
tC9D6+FgDfwRrYbDQTYNsulBNgsyt9a8y0mQnRzsToMMv/C45HBqgDO5wdUQjlZe
K87VjlbXQZhFT0S+CBUtGTKe96I47KxfvI4zbXLa4nozChDVbZTfXJ0PP1fO/wUA
AP//AwBQSwMEFAAGAAgAAAAhABegFk4CAQAArAEAABQAAAB3b3JkL3dlYlNldHRp
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
</FileData>
<FileName>Document.docx</FileName>
<FileType>docx</FileType>
</Finding>
<IDfind>PAY-14 1 07 01r7</IDfind>
</Findings>

с XML-тегами. Затем я использую DOM-парсер, анализируя этот XML и сохраняя в File (с расширением docx) каждый FileData. Но Word показать ошибку, когда я пытаюсь открыть этот файл. Можете ли вы помочь мне решить мою проблему? Вот мой код Java

File xmlFile = new File(filepath);
        try {
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);
            NodeList list = doc.getElementsByTagName("Findings");
            int length = list.getLength();
            Node nNode = null;
            for (int temp = 0; temp < length; temp++) {
                nNode = list.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    String ids = eElement.getElementsByTagName("id").item(0)
                            .getTextContent();
                    Node finding = eElement.getElementsByTagName("Finding")
                            .item(0);
                    if (finding != null
                            && finding.getNodeType() == Node.ELEMENT_NODE) {
                        Element find = (Element) finding;
                        String findName = find.getElementsByTagName("FileName")
                                .item(0).getTextContent();
                        String data = find.getElementsByTagName("FileData")
                                .item(0).getTextContent();
                        String decdata = StringUtils.newStringUtf8(Base64
                                .decodeBase64(data));
                        String todec =  decdata.substring(decdata.indexOf("PK"));
                        String[] id = ids.split(" ");
                        if (id.length > 1) {
                            for (int idf = 0; idf < id.length; idf++) {
                                int idfind = Integer.parseInt(id[idf]);
                                File tempf = new File(defaultFileDirectory
                                        + idfind + "\\" + findName);
                                FileUtils.writeStringToFile(tempf, todec,
                                        "UTF8");

                            }
                        } else {
                            int idf = Integer.parseInt(ids);
                            File tempf = new File(defaultFileDirectory + idf
                                    + "\\" + findName);
                            FileUtils.writeStringToFile(tempf, decdata, "UTF8");
                        }
                    }
} catch (Exception e) {
            e.printStackTrace();
        }
    }
Теги:
ms-access-2007
save
attachment

1 ответ

0
Лучший ответ

Обычно бинарные данные кодируются Base64 при включении в файл XML. Я взял <FileData> из вашего примера, Base64 расшифровал его, а затем написал в файл. В результате получилось:

Изображение 174551

Это похоже на файл.docx с 22 байтами "мусора" в самом начале. (Файл.docx на самом деле является ZIP-архивом, поэтому первые два байта файла должны быть "PK" или 0x50 0x4B.)

Мне удалось успешно создать документ Word:

  • извлечение текста <FileData>,
  • Base64 декодирует его,
  • 0x50 0x4B ведущие байты, предшествующие "PK" (0x50 0x4B), и
  • сохраняя остальное как файл.docx.

Пример реализации. После того, как текст <FileData> извлечен в переменную String с именем strEncoded вы можете извлечь файл.docx, используя следующий код:

byte[] bytesDecoded = DatatypeConverter.parseBase64Binary(strEncoded);
int pkStart = -1;
for (int i = 0; i < (bytesDecoded.length - 1); i++) {
    if (bytesDecoded[i] == 0x50) {  // "P"
        if (bytesDecoded[i+1] == 0x4B) {  // "K"
            pkStart = i;
            break;
        }
    }
}
if (pkStart < 0) {
    System.out.println("Did not find 'PK' marker in decoded data.");
}
else {
    FileOutputStream fos = new FileOutputStream("C:\\Users\\Gord\\Desktop\\Hello.docx");
    fos.write(Arrays.copyOfRange(bytesDecoded, pkStart, bytesDecoded.length));
    fos.close();
}
  • 0
    Я пишу только небольшую часть «<FileData>». Теперь я редактирую свой вопрос и помещаю все данные
  • 0
    @Sydorov Мне удалось успешно извлечь документ, используя шаги, изложенные в моем ответе. После того как я Base64-декодировал текст <FileData> , удалил 22 байта «мусора» в начале и сохранил остальные как файл .docx, я мог открыть его без проблем в Word 2010.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню