streamToResponse method

Future<void> streamToResponse(
  1. HttpRequest request, {
  2. bool handleRange = true,
})

Streams this file to the current HTTP response.

Range requests are supported by default, which is especially useful for browser media playback and seeking.

Parameters:

  • request: The active request whose response will receive the file.
  • handleRange: Whether to honor Range headers. Defaults to true.

Example:

final file = await request.form().file('video');
if (file != null) {
  await file.streamToResponse(request);
}

Implementation

Future<void> streamToResponse(HttpRequest request, {bool handleRange = true}) async {
  final totalLength = await length;
  final bytes = await _cachedBytes;

  // Check for range requests (important for media playback)
  final rangeHeader = request.headers[HttpHeaders.rangeHeader];

  if (handleRange && rangeHeader != null && rangeHeader.isNotEmpty) {
    await _handleRangeRequest(request, bytes, totalLength, rangeHeader.first);
  } else {
    await _sendFullFile(request, bytes, totalLength);
  }
}