Dropzone подписал прямую загрузку в Cloudinary
Я хотел бы иметь возможность использовать DropZone для загрузки в Cloudinary без использования upload_preset. Вот пример Stackru, который объясняет, как это сделать с помощью предустановки выгрузки. Подход, использованный в этом ответе, заключается в добавлении обязательных параметров Cloudinary к объекту FormData, доступному в событии отправки, что не будет работать в моем случае использования. (используя подписанные загрузки).
Чтобы загрузить без использования upload_preset, мне нужно будет выполнить вызов API сервера во время отправки события. Это необходимо, поскольку подпись для загрузки генерируется с использованием большинства параметров, поддерживаемых Cloudinary для загрузки изображений, а также отметки времени. Поэтому, если я хочу установить какие-либо параметры загрузки Cloudinary на основе фактически удаленных файлов, мне нужно сделать этот вызов API где-нибудь в рабочем процессе обработки событий Dropzone.
Теоретически я мог бы сделать это с помощью синхронного XMLHttpRequest внутри функции, которую я зарегистрировал для прослушивания события "посылка". Это не самый лучший подход.
Облачный виджет загрузки Ajax имеет параметр uploadSignature, который принимает аргумент функции с обратным вызовом (задокументировано здесь), чтобы требуемый вызов API сервера мог быть выполнен с помощью асинхронного вызова (при условии, что я правильно понимаю пример кода). Есть ли какая-то эквивалентная возможность для Dropzone, которую я пропустил в документации?
Любые другие предлагаемые подходы?
1 ответ
Во-первых, вы должны инициализировать Dropzone таким образом, чтобы он не запускал загрузку автоматически, установив autoProcessQueue: false
, Затем используйте addedfile
событие для отправки вызова Ajax для генерации подписи на вашем сервере. Обратный вызов от Ajax должен ввести подпись и метку времени в параметры загрузки (например, myDropzone.options.params[signature]=signature
и т.д.), а затем запустить загрузку, позвонив myDropzone.processQueue();