getContentOverrideName method
{{% boxes/note %}}
Replaced by GET /_matrix/client/v1/media/download/{serverName}/{mediaId}/{fileName}
(requires authentication).
{{% /boxes/note %}}
This will download content from the content repository (same as the previous endpoint) but replace the target file name with the one provided by the caller.
{{% boxes/warning %}}
{{< changed-in v="1.11" >}} This endpoint MAY return 404 M_NOT_FOUND
for media which exists, but is after the server froze unauthenticated
media access. See Client Behaviour for more
information.
{{% /boxes/warning %}}
serverName
The server name from the mxc://
URI (the authority component).
mediaId
The media ID from the mxc://
URI (the path component).
fileName
A filename to give in the Content-Disposition
header.
allowRemote
Indicates to the server that it should not attempt to fetch the media if
it is deemed remote. This is to prevent routing loops where the server
contacts itself.
Defaults to true
if not provided.
timeoutMs
The maximum number of milliseconds that the client is willing to wait to
start receiving data, in the case that the content has not yet been
uploaded. The default value is 20000 (20 seconds). The content
repository SHOULD impose a maximum value for this parameter. The
content repository MAY respond before the timeout.
allowRedirect
Indicates to the server that it may return a 307 or 308 redirect
response that points at the relevant media content. When not explicitly
set to true
the server must return the media content itself.
Implementation
@deprecated
Future<FileResponse> getContentOverrideName(
String serverName,
String mediaId,
String fileName, {
bool? allowRemote,
int? timeoutMs,
bool? allowRedirect,
}) async {
final requestUri = Uri(
path:
'_matrix/media/v3/download/${Uri.encodeComponent(serverName)}/${Uri.encodeComponent(mediaId)}/${Uri.encodeComponent(fileName)}',
queryParameters: {
if (allowRemote != null) 'allow_remote': allowRemote.toString(),
if (timeoutMs != null) 'timeout_ms': timeoutMs.toString(),
if (allowRedirect != null) 'allow_redirect': allowRedirect.toString(),
},
);
final request = Request('GET', baseUri!.resolveUri(requestUri));
final response = await httpClient.send(request);
final responseBody = await response.stream.toBytes();
if (response.statusCode != 200) unexpectedResponse(response, responseBody);
return FileResponse(
contentType: response.headers['content-type'],
data: responseBody,
);
}