Re-added and simplified file_transfer() by reusing the logic of StreamedResponse.
parent
327b2bcd1b
commit
6340061ba8
|
@ -1967,6 +1967,28 @@ function file_unmanaged_save_data($data, $destination = NULL, $replace = FILE_EX
|
||||||
return file_unmanaged_move($temp_name, $destination, $replace);
|
return file_unmanaged_move($temp_name, $destination, $replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transfers a file to the client using HTTP.
|
||||||
|
*
|
||||||
|
* Pipes a file through Drupal to the client.
|
||||||
|
*
|
||||||
|
* @param $uri
|
||||||
|
* String specifying the file URI to transfer.
|
||||||
|
* @param $headers
|
||||||
|
* An array of HTTP headers to send along with file.
|
||||||
|
*/
|
||||||
|
function file_transfer($uri, $headers) {
|
||||||
|
return new StreamedResponse(function() use ($uri) {
|
||||||
|
// Transfer file in 1024 byte chunks to save memory usage.
|
||||||
|
if (file_exists($uri) && $fd = fopen($uri, 'rb')) {
|
||||||
|
while (!feof($fd)) {
|
||||||
|
print fread($fd, 1024);
|
||||||
|
}
|
||||||
|
fclose($fd);
|
||||||
|
}
|
||||||
|
}, 200, $headers);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Page callback: Handles private file transfers.
|
* Page callback: Handles private file transfers.
|
||||||
*
|
*
|
||||||
|
@ -2003,16 +2025,7 @@ function file_download() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (count($headers)) {
|
if (count($headers)) {
|
||||||
return new StreamedResponse(function() use ($uri) {
|
return file_transfer($uri, $headers);
|
||||||
$scheme = file_uri_scheme($uri);
|
|
||||||
// Transfer file in 1024 byte chunks to save memory usage.
|
|
||||||
if ($scheme && file_stream_wrapper_valid_scheme($scheme) && $fd = fopen($uri, 'rb')) {
|
|
||||||
while (!feof($fd)) {
|
|
||||||
print fread($fd, 1024);
|
|
||||||
}
|
|
||||||
fclose($fd);
|
|
||||||
}
|
|
||||||
}, 200, $headers);
|
|
||||||
}
|
}
|
||||||
throw new AccessDeniedHttpException();
|
throw new AccessDeniedHttpException();
|
||||||
}
|
}
|
||||||
|
|
|
@ -734,16 +734,7 @@ function image_style_deliver($style, $scheme) {
|
||||||
'Content-Type' => $image->info['mime_type'],
|
'Content-Type' => $image->info['mime_type'],
|
||||||
'Content-Length' => $image->info['file_size'],
|
'Content-Length' => $image->info['file_size'],
|
||||||
);
|
);
|
||||||
return new StreamedResponse(function() use ($uri) {
|
return file_transfer($uri, $headers);
|
||||||
$scheme = file_uri_scheme($uri);
|
|
||||||
// Transfer file in 1024 byte chunks to save memory usage.
|
|
||||||
if ($scheme && file_stream_wrapper_valid_scheme($scheme) && $fd = fopen($uri, 'rb')) {
|
|
||||||
while (!feof($fd)) {
|
|
||||||
print fread($fd, 1024);
|
|
||||||
}
|
|
||||||
fclose($fd);
|
|
||||||
}
|
|
||||||
}, 200, $headers);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
watchdog('image', 'Unable to generate the derived image located at %path.', array('%path' => $derivative_uri));
|
watchdog('image', 'Unable to generate the derived image located at %path.', array('%path' => $derivative_uri));
|
||||||
|
|
|
@ -115,19 +115,12 @@ function update_test_mock_page($project_name) {
|
||||||
|
|
||||||
$path = drupal_get_path('module', 'update_test');
|
$path = drupal_get_path('module', 'update_test');
|
||||||
$file = "$path/$project_name.$availability_scenario.xml";
|
$file = "$path/$project_name.$availability_scenario.xml";
|
||||||
|
$headers = array('Content-Type' => 'text/xml; charset=utf-8');
|
||||||
if (!is_file($file)) {
|
if (!is_file($file)) {
|
||||||
// Return an empty response.
|
// Return an empty response.
|
||||||
return new Response('', 200, array('Content-Type' => 'text/xml; charset=utf-8'));
|
return new Response('', 200, $headers);
|
||||||
}
|
}
|
||||||
return new StreamedResponse(function() use ($file) {
|
return file_transfer($file, $headers);
|
||||||
// Transfer file in 1024 byte chunks to save memory usage.
|
|
||||||
if ($fd = fopen($file, 'rb')) {
|
|
||||||
while (!feof($fd)) {
|
|
||||||
print fread($fd, 1024);
|
|
||||||
}
|
|
||||||
fclose($fd);
|
|
||||||
}
|
|
||||||
}, 200, array('Content-Type' => 'text/xml; charset=utf-8'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue