filepicker.io JS API v2使用裁剪UI在pick调用之后转换调用时出现错误142

Error 142 from filepicker.io JS API v2 convert call after pick call with cropping UI

本文关键字:调用 转换 之后 错误 pick API JS io v2 UI 裁剪      更新时间:2023-09-26

我使用的是付费的Filepicker.io帐户。

我通过JS API版本2从转换调用返回错误142。

错误对象的toString方法告诉我包含filepicker_debug.js以获取更多信息,但该文件给出了404,所以这没有帮助。

文档中说142表示"用户的文件无法使用请求的参数进行转换。"我发送的参数是{width: 240, height: 240}

我的代码运行一个pick操作(使用裁剪UI(,然后将回调中可用的"Blob"传递给store命令(有效(和convert命令(无效(。

我尝试删除store命令,所以只删除pick,然后删除convert,但没有更改。

如上所述,我传递的convert选项是{width: 240, height: 240}。我还尝试传递额外的选项,如fit:clipfit:scalerotate:exif,但这并没有改变任何事情。我还尝试在pickAndStore调用之后执行此操作,而不仅仅是在pick调用之后;也没有变化。

我没有编辑从pick命令返回的"Blob",它与store命令一起工作,所以我不认为这可能是问题所在(就像在类似的问题中一样(。我不认为我在那里做错了什么。

如果我查看从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和其他参数。

文件选择器人员:请修复此问题。

在将其传递给convert之前,我试图通过编辑"Blob"对象来解决它。解决方法看起来有点像这样:

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,整个图像的大小会调整,而不仅仅是裁剪的部分。

关于这个主题,convert的REST API文档说

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

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

似乎除非Filepicker解决了这些问题,否则我将被迫不允许用户裁剪图像,或者只有在我的store操作(已经裁剪了图像(完成后才执行convert。这意味着我无法并行保存全尺寸和缩略图。

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

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