Как автоматически запустить загрузку в PHP?

Вы получите это сообщение об ошибке в Xcode 7 (Swift 2), если подкласс объявляет соответствие протоколу, который уже унаследован от суперкласса. Пример:

class MyClass : CustomStringConvertible {
    var description: String { return "MyClass" }
}

class Subclass : MyClass, CustomStringConvertible {
    override var description: String { return "Subclass" }
}

Журнал ошибок показывает:

main.swift:10:27: error: redundant conformance of 'Subclass' to protocol 'CustomStringConvertible'
class Subclass : MyClass, CustomStringConvertible {
                          ^
main.swift:10:7: note: 'Subclass' inherits conformance to protocol 'CustomStringConvertible' from superclass here
class Subclass : MyClass, CustomStringConvertible {
      ^

Удаление соответствия протокола из декларации подкласса решает проблему:

class Subclass : MyClass {
    override var description: String { return "Subclass" }
}

Но суперкласс должен объявить соответствие явно, это не будет автоматически выведено из существования свойства description.

48
задан Community 9 September 2008 в 21:13
поделиться

2 ответа

Отправьте следующие заголовки прежде, чем произвести файл:

header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($File));
header("Connection: close");

@grom: Интересный о 'application/octet-stream' типе MIME. Я не знал об этом, всегда только что использовали 'application/force-download':)

56
ответ дан Robert Swisher 7 November 2019 в 22:22
поделиться

Вот пример передачи обратно PDF.

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
readfile($filename);

@Swish я не находил тип контента применения, чтобы сделать что-либо различное (протестированный в IE и Firefox). Существует ли причина того, что не был передан фактический тип MIME обратно?

Также в руководстве PHP Hayley Watson отправленный:

, Если Вы хотите вынудить файл быть загруженным и сохраненным вместо того, чтобы быть представленным, помнят, что нет такого типа MIME как "application/force-download". Корректный тип для использования в этой ситуации является "application/octet-stream", и использование чего-либо еще просто полагается на то, что клиенты, как предполагается, игнорируют нераспознанные типы MIME и используют "application/octet-stream" вместо этого (ссылка: Разделы 4.1.4 и 4.5.1 из RFC 2046).

Также соответственно IANA там является не зарегистрированным типом application/force-download.

41
ответ дан Community 7 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: