Anton

Anton

С нами с 09 февраля 2016; Место в рейтинге пользователей: #1377
Anton
06 мая 2019, 08:22
0
Может кому будет полезно:
Ссылку на загруженный файл на Яндекс.Диске мы отправляли в письме менеджеру.
Так вот в названии папки "MODX Яндекс.Диск" присутствует пробел и с ним были проблемы.
Ссылка не открывалась или вела на 404 страницу.
Поэтому пробел заменили на "MODX%20Яндекс.Диск"
Но для этого сделали отдельную переменную и плейсхолдер.
Т.к. сниппет наоборот с таким путём работать не сможет.
Anton
06 мая 2019, 08:15
0
Интересно, что

В документации libcurl указано CURLOPT_PUT
DESCRIPTION
A parameter set to 1 tells the library to use HTTP PUT to transfer data. The data should be set with CURLOPT_READDATA and CURLOPT_INFILESIZE.
This option is deprecated since version 7.12.1. Use CURLOPT_UPLOAD!


Т.е. upload должен работать, а не put
Но, нет…
Anton
06 мая 2019, 08:12
0
Здравствуйте, Илья.
Спасибо за отклик и отличное дополнение!

Проблему решили.
Судя по всему проблема появилась после обновления на сервере библиотеки libcurl (было 7.62, стало 7.64.1)

Необходимо было в сниппете добавить:
curl_setopt($ch, CURLOPT_PUT, true);
а перед этим согласно мануалу php еще и
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($_FILES[$inputId]['tmp_name']));
итого у нас получилось:

$ch = curl_init($response['href']);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
        curl_setopt($ch, CURLOPT_INFILE, fopen($_FILES[$inputId]['tmp_name'], 'r'));
        curl_setopt($ch, CURLOPT_INFILESIZE, filesize($_FILES[$inputId]['tmp_name']));
        curl_setopt($ch, CURLOPT_UPLOAD, true);
        curl_setopt($ch, CURLOPT_POST, false);
        curl_setopt($ch, CURLOPT_PUT, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_exec($ch);
        curl_close($ch);
Anton
04 мая 2019, 21:23
0
День добрый.
Возникла проблема на боевом сервере.
Файлы успешно прикрепляются, в папке tmp на хостинге создается соответствующий по размеру временный файл, но на яндекс.диске файлы загруженные весят 0 байт, т.е. пустые…

Такое впечатление, что сниппет просто создает файлы с указанным именем\расширением, но не копирует файлы.

Ошибок ни js ни php никаких не выдает.

На этой же базе данных, с этими же файлами на локальном сервере всё работает как часы.

В какую сторону копать?

Заранее спасибо!
Anton
15 марта 2018, 09:16
0
Нет, так и пользуемся с &ajaxHistory=`0`
Anton
30 декабря 2017, 14:14
0
Подтверждаю, есть такой баг. В любом сафари, на любом устройстве и ОС.
Хоть на маке, хоть на айфоне, хоть даже на обычном ПК с windows и древней сафари 5.
Кидает на главную после посещения любой страницы с pdopage ajax и последующим возвратом.

Комментирование той строки портит возврат для самой пагинации у всех.
Либо плюнуть на пользователей сафари, либо &ajaxHistory=`0` и у всех не будет запоминаться история самой пагинации.