if (file_exists($path . '/' . $dfi->hashedName)) { $response = new \Http\Response(); $response->setHeader("X-UA-Compatible", 'IE=edge'); $response->setHeader("Content-Type", isset($dfi->mimeType) && !$nomime ? $dfi->mimeType : 'application/octet-stream'); $response->setHeader("Content-Transfer-Encoding", 'binary'); $response->setHeader("Content-Disposition", ($nomime ? 'attachment' : 'inline') . '; filename=' . str_replace(['\\','"','#','*',';',':','|','<','>','/','?',','], '_', mb_convert_encoding($dfi->originalName, 'CP1251', 'UTF-8')) . '; filename*=UTF-8\'\''.rawurlencode($dfi->originalName).''); $response->setHeader("Content-Length", (string)(filesize($fpath))); $response->sendHeaders(); if ($file = fopen($fpath, 'rb')) { while(!feof($file) and (connection_status()==0 || 1)) { print(fread($file, 1024*8)); flush(); } fclose($file); } exit; }
Загрузка файлов, параметр filename в HTTP заголовке Content-Disposition
«Крякозябры» вместо имени файла в IE или ошибка загрузки и сообщение о дублирующемся заголовке на движке WebKit.