如何将给定的curl命令复制为jquery ajax请求
How can I duplicate the given curl command as a jquery ajax request?
我有以下REST API调用示例-
curl -u "{username}":"{password}" -X POST '
-F "images_file=@test.jpg" '
"https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classify?version=2015-12-02"
我想将上述调用作为一个标准的ajax请求来执行。这就是我目前所拥有的
cropper.getCroppedCanvas().toBlob(function(blob){
var uploadData = new FormData();
uploadData.append('images_file',blob);
$.ajax('https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classify?version=2015-12-02', {
method: "POST",
data: uploadData,
processData: false,
contentType: false,
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic ODdlOTTZIeg==');
},
success: function (data) {
console.log('Upload success');
console.log(data);
},
error: function (data) {
console.log('Upload error');
console.log(data);
}
})
})
我得到一个错误作为-
"{"code":400,"error":"Could not classify. Verify that valid images were uploaded."}"
我的预感是,在上面的ajax调用中,cURL的-F image_results=@test.jpg
没有得到正确的模拟。
getCroppedCanvas()是来自cropperjs库的函数调用。
将formData
与blob
一起使用,如下所示:
formdata.append("myfile", myBlob, "filename.txt");
参见文件
使用append()方法时,可以使用第三个可选参数在发送到服务器的Content-Disposition标头中传递文件名。如果未指定文件名(或不支持该参数),则使用名称"blob"。
因此,对于您的案例:
cropper.getCroppedCanvas().toBlob(function(blob){
var uploadData = new FormData();
var filename = "your-file-name-with-suffix";
uploadData.append('images_file',blob,filename);
//$.ajax(...);
});
相关文章:
- 如何将给定的curl命令复制为jquery ajax请求
- jQuery表单克隆,如何阻止值被复制
- jQuery-将表单复制到相同的表单
- jQuery将文本从span标记复制到另一个span标记
- jquery使用val()复制值似乎可以删除换行符
- 使用jQuery/Javascript将忽略表头的表的内容复制到剪贴板
- 在jquery中复制特定的html代码
- jQuery Mobile pageinit在第一次加载页面上不起作用(可复制)
- jQuery 验证正在复制 else 语句 |验证完成后,不会打印值
- 如何使用jquery复制文本区域中的每一行文本
- 使用jquery创建并复制一个选择框
- jQuery和其他从工作的jsfiddle复制到本地env时未运行的JS
- 使用jquery防止在url中复制和粘贴
- 复制jquery脚本并显示不同的结果
- 复制jQuery甚至触摸绑定
- 可以't复制Jquery Mobile自动完成演示
- 复制jQuery's.next('a')使用vanila javascript
- 通过类选择器复制jQuery弹出窗口
- 如何在不使用jQuery的情况下复制jQuery移动堆叠复选框?
- 如何使用jQuery的.ajax()方法复制jQuery的.load()方法