我正在使用付费的Filepicker.io帐户。
我通过JS API版本2从转换调用中找回错误142.
错误对象的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中所述)。我不认为我在那里做错了什么。
如果我查看从Filepicker返回的HTTP响应,它是一个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并不期望庄稼参数(可能是由裁剪UI添加)存在于此处,而是盲目地添加/convert
和其他内容。
Filepicker人:请解决此问题。
我尝试通过编辑“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
)完成。这意味着我无法并行保存完整大小和缩略图。
答案 0 :(得分:1)
我们今天进行了部署,解决了这个问题,当人们首先使用我们的裁剪工具裁剪图像时会收到错误,然后尝试获取该网址并将其传递给convert方法。现在,如果您将url传递到已经指向转换端点的convert方法,则将解析裁剪参数,并且将以指定的任何方式裁剪和转换生成的图像。
我们还添加了一个crop_first参数,可以设置为true。如果此参数设置为true,则裁剪将在任何其他转换发生之前发生(调整大小,旋转等)。