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

Do not cause errors for unknown files for sendfile
This commit is contained in:
Armin Ronacher 2016-09-12 21:52:42 +03:00 committed by GitHub
commit a40489e0ce
3 changed files with 5 additions and 11 deletions

View file

@ -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:

View file

@ -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 '

View file

@ -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__)