filepicker.io JS API v2使用裁剪UI在pick调用之后转换调用时出现错误142
Error 142 from filepicker.io JS API v2 convert call after pick call with cropping UI
我使用的是付费的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:clip
、fit:scale
或rotate: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);
这很难看,经过测试,我发现它实际上根本不起作用。作物没有生长。如果我删除width
和height
,它会正确裁剪,所以我知道提取裁剪参数的方式是正确的,但使用width
和height
,整个图像的大小会调整,而不仅仅是裁剪的部分。
关于这个主题,convert的REST API文档说
裁剪和调整大小:我们强烈建议不要将调整大小(指定宽度或高度(与裁剪功能相结合,因为它具有不确定的效果,这取决于裁剪是在调整图像大小之前还是之后应用。
我开始质疑我为什么要使用这项服务。
似乎除非Filepicker解决了这些问题,否则我将被迫不允许用户裁剪图像,或者只有在我的store
操作(已经裁剪了图像(完成后才执行convert
。这意味着我无法并行保存全尺寸和缩略图。
我们今天进行了一次部署,修复了这个问题,即当人们首先使用我们的cropper工具裁剪图像,然后尝试获取该url并将其传递到convert方法时,会收到错误。现在,如果您将一个url传递到已经指向转换端点的转换方法中,则裁剪参数将被解析,生成的图像将以指定的任何方式进行裁剪和转换。
我们还添加了一个crop_first参数,该参数可以设置为true。如果此参数设置为true,则裁剪将在任何其他转换(调整大小、旋转等(发生之前发生。
- 将PHP mcrypt()调用转换为node's mcrypt
- Ajax调用OGRE转换器
- 调用函数时页面未转换
- 如何将控制器http调用转换为接受参数的服务/工厂模式
- 将c#get方法a转换为post方法,从javascript调用
- jquery mobile,从事件调用转换
- 将 8 个 Ajax 调用转换为 1
- 如何将函数调用转换为首先评估输入的字符串
- 如何将具有两个回调的函数调用转换为promise
- 将Mootools 1.1 Ajax调用转换为Mootools 1.3
- 将一个简单的ajax调用转换为使用承诺jQuery/AngularJS
- Javascript到jQuery的xml ajax调用转换
- 如何将RESTful POST调用转换为Tornado中的Ajax
- 将Prototype Ajax调用转换为jQuery(添加表单参数和加载函数)
- 将jQuery的parent()和sibling()调用转换为纯Javascript
- 将curl调用转换为javascript ajax调用
- 通过分页将ajax调用转换为Bacon.js流
- 如何将js函数从异步调用转换为回调调用
- 如何将jquery ajax调用转换为WinJS.xhr或Win8等效文件
- 需要帮助将function作为第一个参数的函数调用转换为CoffeeScript