2015-07-05 2 views
0

Я использую оплаченную учетную запись Filepicker.io.Ошибка 142 от filepicker.io JS API v2 конвертировать вызов после вызова вызова с обрезкой UI

Я получаю обратно сообщение об ошибке 142 от новообращенного вызова через API версии JS 2.

toString метод объекта ошибки говорит мне, чтобы включить filepicker_debug.js для получения дополнительной информации, но этот файл дает 404, так что не полезно.

The docs говорят, что 142 означает «Файл пользователя не может быть преобразован с запрошенными параметрами». Параметры, которые я отправляю, - {width: 240, height: 240}.

Мой код работает pick операцию (которая использует обрезанный UI), а затем передает «Blob», который доступен в функции обратного вызова к store команде (который работает) и команду convert (который не делает).

Я попытался удалить команду store, так что только pick, а затем convert, но никаких изменений.

Варианты convert Я прохожу, как указано выше, {width: 240, height: 240}. Я также пробовал использовать дополнительные опции, например fit:clip или fit:scale или rotate:exif, но это ничего не меняет. Я также попытался сделать это после звонка pickAndStore, а не только pick; тоже без изменений.

Я не редактируя «Blob», который возвращается из команды pick, и он работает с командой store, так что я не думаю, что может быть проблема (как это было в a similar issue). Я не думаю, что я делаю что-то не так.

Если я смотрю HTTP-ответ, который возвращается из Filepicker, это код 400 и говорит мне, например, [uuid=16CB6B72517940C7] Invalid conversion parameters. Если я посмотрю на то, что действительно было отправлено, я думаю, что я вижу проблему.

Этот конкретный запрос POST был отправлен на номер https://www.filepicker.io/api/file/ndayWb5GTmNyPoAOjSdg/convert?crop=955,621,954,954/convert&_cacheBust=1436084602394&plugin=js_lib с предоставленными данными формы width: 240, height: 240, storeLocation: "S3", storePath: "storyimg/local/iq84xYTsu1jJaRcq_small.jpg".

Этот параметр GET crop=955,621,954,954/convert выглядит довольно подозрительно. Я вижу в «Blob» имущество url: "https://www.filepicker.io/api/file/ndayWb5GTmNyPoAOjSdg/convert?crop=955,621,954,954". Мне кажется, что некоторые JS в библиотеке не ожидают, что параметры урожая (предположительно добавленные пользовательским интерфейсом обрезки) будут существовать здесь, и слепо добавляет /convert, а остальное.

Люди с файлами: пожалуйста, исправьте это.

Я попытался обойти это, отредактировав объект «Blob», прежде чем передать его convert. Обходной путь выглядит немного как это:

filepicker.pick({ 
    cropRatio: 1, 
    services: ['convert', pickerType], 
}, function (blob) { 
    filepicker.convert($.extend({}, blob, { 
     url: blob.url.replace(/\/convert\b.*/, ''), 
    }), { 
     width: 240, 
     height: 240, 
     crop: blob.url.replace(/.*[?&]crop=([0-9,]+)(?:&|$).*/, '$1').split(','), 
    }, storeOptions, function (blob) { 
     console.log("Convert completed successfully", blob); 
    }, handleError); 
}, handleError); 

Это некрасиво, и после тестирования, я вижу, что это не на самом деле даже работать. Урожай не происходит. Если я удалю width и height, он правильно пометит, так что я знаю, как я правильно извлекаю параметры урожая, но с width и height все изображение изменяется, а не только обрезанная часть.

На теме, REST API documentation for convert говорит

Обрезка и изменение размера: мы настоятельно рекомендуем против объединения изменения размера (с указанием ширины и высоты) с функциональностью растениеводства, так как он имеет неизвестность эффектов в зависимости от того, урожай применяется до или после изменения размера изображения.

Я начинаю сомневаться, почему я вообще пользуюсь этой услугой.

кажется, что если Filepicker не устраняет эти проблемы, я вынужден не позволить пользователю, чтобы обрезать изображение, или сделать convert только после моей store операции (которая уже обрезанного изображения) завершается. Это означает, что я не могу распараллелить сохранение полноразмерных изображений и уменьшенных изображений.

ответ

1

Сегодня мы провели развертывание, которое устраняет эту проблему, когда люди получат сообщение об ошибке, когда сначала обрезают изображение с помощью нашего инструмента обрезки, а затем пытались взять этот URL-адрес и передать его в метод преобразования. Теперь, если вы передадите url в метод преобразования, который уже направлен на конечную точку конвертирования, параметры обработки будут проанализированы, и результирующее изображение будет обрезано и преобразовано любым способом.

Мы также добавили параметр crop_first, который может быть установлен в true. Если для этого параметра установлено значение true, то урожай будет происходить до того, как произойдет любое другое преобразование (изменение размера, поворот и т. Д.).

+0

Тот же самый код, который был изначально запущен, теперь работает как ожидалось. Спасибо за исправление этого. – tremby