У меня есть файл типа «983Y4938920820894838947» на моем сервере, и я бы хотел, чтобы пользователь сохранил его как «subject.zip».
Использование расположения заголовка делает загрузку работоспособной, и файл не поврежден.
Всякий раз, когда я использую заголовки с вложением, типом содержимого и новым именем файла, загружаемый zip-файл поврежден (я думаю?).
Всякий раз, когда я открываю файл ZIP (например, test.zip), он создает новый файл с именем test.zip.cpgz. Я предполагаю, что это способ Mac сказать, что файл поврежден.
Я использую следующий код
// Скачать ZIP файл
header("Content-Type: application/zip");
header('Content-Disposition: attachment; filename="' . stripslashes($new_filename) . '"');
readfile($filename);
Это делает файл поврежденным, в то время как приведенный ниже код работает отлично (но не меняет имя):
header("Location: $filename");
Я пробовал другие заголовки без какого-либо успеха. У кого-нибудь есть идеи? Спасибо!
Там вам не хватает заголовка, если вы не укажете длину содержимого, браузер не будет знать, каков размер файла:
header("Content-Length: {{replace.with.your.file.size}}");
Может быть, это решит ваши проблемы.
Проблема была в том, что у меня было эхо. Эхо испортило молнию. Поэтому имеет смысл, что он работал только с расположением заголовка, а не с обычными заголовками для изменения имени файла. Удаление эха исправило это для меня.