|
24 | 24 | import java.io.OutputStream; |
25 | 25 | import java.nio.file.Files; |
26 | 26 | import java.nio.file.Path; |
27 | | -import java.nio.file.StandardCopyOption; |
28 | 27 |
|
29 | 28 | import org.slf4j.Logger; |
30 | 29 | import org.slf4j.LoggerFactory; |
@@ -113,30 +112,31 @@ public void parseEmbedded( |
113 | 112 |
|
114 | 113 | private void parseWithBytes(TikaInputStream tis, ContentHandler handler, Metadata metadata) throws TikaException, IOException, SAXException { |
115 | 114 |
|
116 | | - Path tmp = Files.createTempFile("tika-tmp-", ".bin"); |
| 115 | + //trigger spool to disk |
| 116 | + Path rawBytes = tis.getPath(); |
| 117 | + |
| 118 | + //There may be a "translated" path for OLE2 etc |
| 119 | + Path translated = null; |
117 | 120 | try { |
118 | 121 | //translate the stream or not |
119 | 122 | if (embeddedStreamTranslator.shouldTranslate(tis, metadata)) { |
120 | | - try (OutputStream os = Files.newOutputStream(tmp)) { |
| 123 | + translated = Files.createTempFile("tika-tmp-", ".bin"); |
| 124 | + try (OutputStream os = Files.newOutputStream(translated)) { |
121 | 125 | embeddedStreamTranslator.translate(tis, metadata, os); |
122 | 126 | } |
123 | | - } else { |
124 | | - Files.copy(tis, tmp, StandardCopyOption.REPLACE_EXISTING); |
125 | | - } |
126 | | - |
127 | | - //now do the parse |
128 | | - if (tis.getOpenContainer() != null) { |
129 | | - parse(tis, handler, metadata); |
130 | | - } else { |
131 | | - try (TikaInputStream tisTmp = TikaInputStream.get(tmp)) { |
132 | | - parse(tisTmp, handler, metadata); |
133 | | - } |
134 | 127 | } |
| 128 | + parse(tis, handler, metadata); |
135 | 129 | } finally { |
136 | 130 | try { |
137 | | - storeEmbeddedBytes(tmp, metadata); |
| 131 | + if (translated != null) { |
| 132 | + storeEmbeddedBytes(translated, metadata); |
| 133 | + } else { |
| 134 | + storeEmbeddedBytes(rawBytes, metadata); |
| 135 | + } |
138 | 136 | } finally { |
139 | | - Files.delete(tmp); |
| 137 | + if (translated != null) { |
| 138 | + Files.delete(translated); |
| 139 | + } |
140 | 140 | } |
141 | 141 | } |
142 | 142 | } |
|
0 commit comments