Skip to content

Commit fe87a2a

Browse files
author
Jim Barton
committed
Add dependency on rfc6266 package if present, to properly build the
content-disposition header for tika.
1 parent 8df6a29 commit fe87a2a

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

tika/tika.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,14 @@
7777
except ImportError:
7878
from urllib.parse import urlparse as urlparse
7979

80+
try:
81+
from rfc6266 import build_header
82+
def make_content_disposition_header(fn):
83+
return build_header(os.path.basename(fn))
84+
except ImportError:
85+
def make_content_disposition_header(fn):
86+
return 'attachment; filename=%s' % os.path.basename(fn)
87+
8088
if sys.version_info[0] < 3:
8189
open = codecs.open
8290

@@ -213,7 +221,10 @@ def parse1(option, urlOrPath, serverEndpoint=ServerEndpoint, verbose=Verbose, ti
213221
service = services.get(option, services['all'])
214222
if service == '/tika': responseMimeType = 'text/plain'
215223
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+
},
217228
verbose, tikaServerJar)
218229

219230
if file_type == 'remote': os.unlink(path)
@@ -292,7 +303,10 @@ def detectType1(option, urlOrPath, serverEndpoint=ServerEndpoint, verbose=Verbos
292303
raise TikaException('Detect option must be one of %s' % binary_string(services.keys()))
293304
service = services[option]
294305
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+
},
296310
verbose, tikaServerJar)
297311
if csvOutput == 1:
298312
return(status, urlOrPath.decode("UTF-8") + "," + response)

0 commit comments

Comments
 (0)