来自filepicker.io JS API v2的错误142转换调用后使用裁剪UI进行调用

时间:2015-07-05 08:47:13

标签: javascript filepicker.io

我正在使用付费的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:clipfit:scalerotate: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);

这很丑陋,经过测试,我发现它实际上并不起作用。作物不会发生。如果我删除widthheight正确裁剪,那么我知道我提取裁剪参数的方式是正确的,但使用widthheight整个图像会调整大小,而不仅仅是裁剪部分。

关于这个问题,REST API documentation for convert

  

裁剪和调整大小:我们强烈建议不要将调整大小(指定宽度或高度)与裁剪功能相结合,因为它具有不确定的效果,具体取决于裁剪是在图像之前还是之后应用调整大小。

我开始质疑我为什么要使用这项服务。

似乎除非Filepicker修复了这些问题,否则我不得仅允许用户裁剪图像,或仅在我的convert操作(已经裁剪图像)后执行store )完成。这意味着我无法并行保存完整大小和缩略图。

1 个答案:

答案 0 :(得分:1)

我们今天进行了部署,解决了这个问题,当人们首先使用我们的裁剪工具裁剪图像时会收到错误,然后尝试获取该网址并将其传递给convert方法。现在,如果您将url传递到已经指向转换端点的convert方法,则将解析裁剪参数,并且将以指定的任何方式裁剪和转换生成的图像。

我们还添加了一个crop_first参数,可以设置为true。如果此参数设置为true,则裁剪将在任何其他转换发生之前发生(调整大小,旋转等)。