我们从Python开源项目中,提取了以下2个代码示例,用于说明如何使用werkzeug.wsgi.wrap_file()。
def send_file(self, filename, base='fs', version=-1, cache_for=31536000): """Return an instance of the :attr:`~flask.Flask.response_class` containing the named file, and implement conditional GET semantics (using :meth:`~werkzeug.wrappers.ETagResponseMixin.make_conditional`). .. code-block:: python @app.route('/uploads/<path:filename>') def get_upload(filename): return mongo.send_file(filename) :param str filename: the filename of the file to return :param str base: the base name of the GridFS collections to use :param bool version: if positive, return the Nth revision of the file identified by filename; if negative, return the Nth most recent revision. If no such version exists, return with HTTP status 404. :param int cache_for: number of seconds that browsers should be instructed to cache responses """ if not isinstance(base, text_type): raise TypeError('"base" must be string or unicode') if not isinstance(version, num_type): raise TypeError('"version" must be an integer') if not isinstance(cache_for, num_type): raise TypeError('"cache_for" must be an integer') storage = GridFS(self.db, base) try: fileobj = storage.get_version(filename=filename, version=version) except NoFile: abort(404) # mostly copied from flask/helpers.py, with # modifications for GridFS data = wrap_file(request.environ, fileobj, buffer_size=1024 * 256) response = current_app.response_class( data, mimetype=fileobj.content_type, direct_passthrough=True) response.content_length = fileobj.length response.last_modified = fileobj.upload_date response.set_etag(fileobj.md5) response.cache_control.max_age = cache_for response.cache_control.s_max_age = cache_for response.cache_control.public = True response.make_conditional(request) return response