Пробелы в названии нарушают загрузку?
Хорошо, у меня есть этот код, который позволит пользователю загрузить песню
$file = DIR_DOWNLOAD . $download_info->row['filename'];
$mask = basename($download_info->row['mask']);
$mime = 'application/octet-stream';
$encoding = 'binary';
if (!headers_sent()) {
if (file_exists($file)) {
header('Pragma: public');
header('Expires: 0');
header('Content-Description: File Transfer');
header('Content-Type: ' . $mime);
header('Content-Transfer-Encoding: ' . $encoding);
header('Content-Disposition: attachment; filename=' . ($mask ? $mask : basename($file)));
header('Content-Length: ' . filesize($file));
$file = readfile($file, 'rb');
Проблема в том, что если в песне есть пробел, например sinsita happy 1 SONIFI.mp3
, пользователь загрузит только текстовый файл с именем sinsita
...любые идеи, как исправить это поведение
7
Author: Matt Elhotiby, 2011-06-29
1 answers
Вы должны указать имя файла в расположении содержимого:
header('Content-Disposition: attachment; filename="' . ($mask ? $mask : basename($file)) . '"');
Редактировать: Теперь это также означает, что если имя файла содержит кавычку; тогда вам нужно избежать этой кавычки. Так что на самом деле ваш код сейчас выглядит так:
header('Content-Disposition: attachment; filename="' . str_replace('"', '\\"', ($mask ? $mask : basename($file))) . '"');
11
Author: vcsjones, 2011-06-29 03:15:37