|
77 | 77 | except ImportError: |
78 | 78 | from urllib.parse import urlparse as urlparse |
79 | 79 |
|
| 80 | +try: |
| 81 | + from rfc6266 import build_header |
| 82 | + def make_content_disposition_header(fn): |
| 83 | + return build_header(os.path.basename(fn)).decode('ascii') |
| 84 | +except ImportError: |
| 85 | + def make_content_disposition_header(fn): |
| 86 | + return 'attachment; filename=%s' % os.path.basename(fn) |
| 87 | + |
80 | 88 | if sys.version_info[0] < 3: |
81 | 89 | open = codecs.open |
82 | 90 |
|
@@ -213,7 +221,10 @@ def parse1(option, urlOrPath, serverEndpoint=ServerEndpoint, verbose=Verbose, ti |
213 | 221 | service = services.get(option, services['all']) |
214 | 222 | if service == '/tika': responseMimeType = 'text/plain' |
215 | 223 | status, response = callServer('put', serverEndpoint, service, open(path, 'rb'), |
216 | | - {'Accept': responseMimeType, 'Content-Disposition': 'attachment; filename=%s' % os.path.basename(path)}, |
| 224 | + { |
| 225 | + 'Accept': responseMimeType, |
| 226 | + 'Content-Disposition': make_content_disposition_header(path) |
| 227 | + }, |
217 | 228 | verbose, tikaServerJar) |
218 | 229 |
|
219 | 230 | if file_type == 'remote': os.unlink(path) |
@@ -292,7 +303,10 @@ def detectType1(option, urlOrPath, serverEndpoint=ServerEndpoint, verbose=Verbos |
292 | 303 | raise TikaException('Detect option must be one of %s' % binary_string(services.keys())) |
293 | 304 | service = services[option] |
294 | 305 | status, response = callServer('put', serverEndpoint, service, open(path, 'r'), |
295 | | - {'Accept': responseMimeType, 'Content-Disposition': 'attachment; filename=%s' % os.path.basename(path)}, |
| 306 | + { |
| 307 | + 'Accept': responseMimeType, |
| 308 | + 'Content-Disposition': make_content_disposition_header(path) |
| 309 | + }, |
296 | 310 | verbose, tikaServerJar) |
297 | 311 | if csvOutput == 1: |
298 | 312 | return(status, urlOrPath.decode("UTF-8") + "," + response) |
@@ -340,7 +354,7 @@ def callServer(verb, serverEndpoint, service, data, headers, verbose=Verbose, ti |
340 | 354 | print(sys.stderr, "Request headers: ", headers) |
341 | 355 | print(sys.stderr, "Response headers: ", resp.headers) |
342 | 356 | if resp.status_code != 200: |
343 | | - log.warning('Tika server returned status:', resp.status_code) |
| 357 | + log.warning('Tika server returned status: %d', resp.status_code) |
344 | 358 | resp.encoding = "utf-8" |
345 | 359 | return (resp.status_code, resp.text) |
346 | 360 |
|
|
0 commit comments