стартовая загрузка файла с JavaScript

Неустранимая ошибка: использование $ this, если не в контексте объекта

$this - специальная переменная в PHP , которая не может быть назначена. Если он доступен в контексте, где он не существует, эта фатальная ошибка указывается.

Эта ошибка может возникнуть:

  1. Если нестатический метод называется статическим , Пример:
    class Foo {
       protected $var;
       public function __construct($var) {
           $this->var = $var;
       }
    
       public static function bar () {
           // ^^^^^^
           echo $this->var;
           //   ^^^^^
       }
    }
    
    Foo::bar();
    
    Как исправить: снова просмотрите свой код, $this может использоваться только в контексте объекта и никогда не должен использоваться в статическом методе. Кроме того, статический метод не должен обращаться к нестатистическому свойству. Используйте self::$static_property для доступа к статическому свойству.
  2. Если код из метода класса был скопирован в нормальную функцию или только глобальную область и , сохраняя специальную функцию $this переменная. Как исправить: Просмотрите код и замените $this на другую переменную замещения.

Вопросы, относящиеся:

  1. Вызов нестатический метод как статический: PHP Неустранимая ошибка: использование $ this, если не в объектном контексте
  2. Копировать код: Неустранимая ошибка: использование $ this, если не в объекте context
  3. Все «Использование $ this, если не в контексте объекта» Вопросы по Stackoverflow

54
задан Baptiste L 1 February 2017 в 04:31
поделиться

5 ответов

Если это - Ваше собственное серверное приложение тогда, я предлагаю использовать следующий заголовок

Content-disposition: attachment; filename=fname.ext

, Это вынудит любой браузер загрузить файл и не представить его в окне браузера.

10
ответ дан fasih.rana 7 November 2019 в 08:02
поделиться

Просто звоните window.location.href = new_url из Вашего JavaScript, и он перенаправит браузер к тому URL как он, пользователь ввел это в строку поиска

7
ответ дан Gareth 7 November 2019 в 08:02
поделиться

Согласовывание с методами, упомянутыми maxnk, однако, можно хотеть пересмотреть попытку автоматически вынудить браузер загрузить URL. Это может хорошо работать для двоичных файлов, но для других типов файлов (текст, PDF, изображения, видео), браузер может хотеть представить его в окне (или IFRAME) вместо сохранения на диск.

, Если действительно необходимо выполнить вызов Ajax для получения заключительных ссылок на загрузку, что относительно того, чтобы использовать DHTML для динамичного выписывания ссылки на загрузку (от ajax ответа) в страницу? Тем путем пользователь мог или нажать на него для загрузки (если двоичный) или представление в их браузере - или выберите "Сохранить Как" на ссылке для сохранения на диск. Это - дополнительный щелчок, но пользователь имеет больше контроля.

3
ответ дан Marc Novakowski 7 November 2019 в 08:02
поделиться

Я предлагаю сделать невидимый iframe на странице, и установить это - src к URL, который Вы получили от сервера - загрузка запустится без перезагрузки страницы.

Или можно просто установить текущий document.location.href на полученный адрес URL. Но это, может вызвать для пользователя для наблюдения ошибки, если требуемый документ на самом деле не делает существует.

2
ответ дан maxnk 7 November 2019 в 08:02
поделиться

Я предложил бы window.open() открыть всплывающее окно. Если это будет загрузка, не будет никакого окна, и Вы получите свой файл. Если будет 404, или что-то, пользователь будет видеть его в новом окне (следовательно, их работа не будет побеспокоена, но они все еще получат сообщение об ошибке).

1
ответ дан Vilx- 7 November 2019 в 08:02
поделиться
Другие вопросы по тегам:

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