Browse Source

Merge pull request #2019 from pallets/bugfix/sendfile-error

Do not cause errors for unknown files for sendfile
pull/2024/head
Armin Ronacher 8 years ago committed by GitHub
parent
commit
a40489e0ce
  1. 4
      docs/upgrading.rst
  2. 8
      flask/helpers.py
  3. 4
      tests/test_helpers.py

4
docs/upgrading.rst

@ -54,8 +54,8 @@ misleading ``name`` attribute. Silently swallowing errors in such cases was not
a satisfying solution. a satisfying solution.
Additionally the default of falling back to ``application/octet-stream`` has Additionally the default of falling back to ``application/octet-stream`` has
been removed. If Flask can't guess one or the user didn't provide one, the been restricted. If Flask can't guess one or the user didn't provide one, the
function fails. function fails if no filename information was provided.
.. _upgrading-to-011: .. _upgrading-to-011:

8
flask/helpers.py

@ -513,14 +513,10 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
if mimetype is None: if mimetype is None:
if attachment_filename is not None: if attachment_filename is not None:
mimetype = mimetypes.guess_type(attachment_filename)[0] mimetype = mimetypes.guess_type(attachment_filename)[0] \
or 'application/octet-stream'
if mimetype is None: if mimetype is None:
if attachment_filename is not None:
raise ValueError(
'Unable to infer MIME-type from filename {0!r}, please '
'pass one explicitly.'.format(attachment_filename)
)
raise ValueError( raise ValueError(
'Unable to infer MIME-type because no filename is available. ' 'Unable to infer MIME-type because no filename is available. '
'Please set either `attachment_filename`, pass a filepath to ' 'Please set either `attachment_filename`, pass a filepath to '

4
tests/test_helpers.py

@ -402,9 +402,7 @@ class TestSendfile(object):
assert 'no filename is available' in str(excinfo) assert 'no filename is available' in str(excinfo)
with app.test_request_context(): with app.test_request_context():
with pytest.raises(ValueError) as excinfo: flask.send_file(StringIO("LOL"), attachment_filename='filename')
flask.send_file(StringIO("LOL"), attachment_filename='filename')
assert "Unable to infer MIME-type from filename 'filename'" in str(excinfo)
def test_send_file_object(self): def test_send_file_object(self):
app = flask.Flask(__name__) app = flask.Flask(__name__)

Loading…
Cancel
Save