Где я столкнулся сначала, когда я нажал файл в заголовок, чтобы загрузить его.«(» или «)« специальный символ для PHP/CodeIgniter?
Теперь все работает отлично. Однако, если у одного из моих файлов есть «(» или «)» в имени, нажатие не работает.
// required for IE
if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); }
// Build the headers to push out the file properly.
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($path)).' GMT');
header('Cache-Control: private',false);
header('Content-Type: application/octet-stream'); // Add the mime type from Code igniter.
header('Content-Disposition: attachment; filename="'.basename($name).'"'); // Add the file name
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($path)); // provide file size
header('Connection: close');
readfile($path); // push it out
exit();
Он просто вычеркнет exit() и даст черную страницу. Теперь я подумал, что это персонаж, которого я должен был убежать. Я пытался избежать его:.
str_replace ('(', '\ (', $ название);
Это, кажется, не работает Теперь я пытался по крайней мере избавиться от «(», чтобы увидеть, если моя заменить функции на самом деле реагирует на «(» характер. Так что я хотел бы просто удалить из строки.
$ NewString = str_replace («(», ' ', $ name);
echo $ newstring;
Теперь, что странно, так это то, что ничего не делает. Еще более странно, когда я это сделать:
$ имя = 'тест (ола;
$ NewString = str_replace ('(', '', $ название);
эхо $ NewString;
Это на самом деле работает
Это где я получу $ название:
$ имя = конец ($ this-> uri-> сегменты);
Итак, кажется, что мой сегмент Uri - это объект или что-то еще, по крайней мере, он не действует как настоящая строка?
Надеюсь, я был достаточно ясен. Заранее спасибо, Nkmol.
Пример текста названия:
тест (2)
Функция
function download()
{
$this->load->helper('download');
$path = ''; //default waarde
//zet de uri segments in een array
$aPath = $this->uri->uri_to_assoc(3);
//zet de segment array om in een nieuwe path, zo word de current directory gesaved in een variable
//de laast segment hoeft geen "/" achter, laaste segment van de volledige url
$i = 0;
$len = count($aPath);
foreach($aPath as $key => $value) :
if ($i == $len - 1)
{
$path .= $key . DIRECTORY_SEPARATOR . $value;
}
else
{
$path .= $key . DIRECTORY_SEPARATOR . $value . DIRECTORY_SEPARATOR;
}
$i++;
endforeach;
$pathEdit = substr($path, -1);
if($pathEdit == '/' || $pathEdit == '\\')
{
$path = substr_replace($path,"", -1);
}
//$data = file_get_contents($path); // Read the file's contents
$name = end($this->uri->segments); //haal de file naam op(laaste segment in de uri)
//echo $blub;
$this -> push_file($path, $name);
//force_download($name, $data);
}
function push_file($path, $name)
{
// check of het een path is en niet een folder
if(is_file($path))
{
// required for IE
if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); }
// Build the headers to push out the file properly.
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($path)).' GMT');
header('Cache-Control: private',false);
header('Content-Type: application/octet-stream'); // Add the mime type from Code igniter.
header('Content-Disposition: attachment; filename="'. basename($name).'"'); // Add the file name
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($path)); // provide file size
header('Connection: close');
readfile($path); // push it out
exit();
//str_replace('"', '\\"', basename($file)) . '"')
//str_replace('(', '\(', basename($file)) . '"')
}
}
Что делает 'var_dump (конец ($ this-> uri-> сегменты))' выходной? –
"string 'test'l ( ol.txt' (length = 17)" Hmm interesting ... Обновление: str_replace ('l (', '', $ name) действительно работает. Однако еще не для загрузки. Это то же самое, что и пространство, я должен избегать его, а не удалять его. – nkmol