gpt4 book ai didi

javascript - Cloudinary Base64图像在angularjs中上传

转载 作者:行者123 更新时间:2023-11-29 15:38:20 26 4
gpt4 key购买 nike

$http({method: 'POST', 
url: $rootScope.CLOUDINARY_CONFIG.upload_url,
data : {
file : canvasImage,
resource_type : 'image',
format: "jpg",
timestamp : 1375363550,
api_key : $rootScope.CLOUDINARY_CONFIG.api_key,
signature : signature,
public_id : scope.model.public_id
},
headers : {"X-Requested-With": "XMLHttpRequest", "Content-Type" : "multipart/formData"}

}).success(function(data, status, headers, config) {
console.log("success");
}).error(function(data, status, headers, config) {
console.log("fail");
});

我正在尝试将 base64 图像上传到 cloudinary 帐户。我已经检查过签名、api key、上传url和canvasImage是否正确。然而,无论何时发送请求,

我得到一个响应错误:

 {"error":{"message":"Missing required parameter - file"}}

在检查请求负载时,我可以看到正在传递的文件参数。

canvasImage 是 base64 jpg。那种 - data:image/jpeg;base64,/9j/4AAQSkZJRgABA.

在 cloudinary 文档中找不到此类内容。

最佳答案

首先,查看 FormData 对象。如果您要上传多部分表单数据,您将需要使用它。

基本上,FormData 对象允许您使用它具有的唯一功能追加文件、blob 和字符串(如果您附加的不是这三者,它将对其进行字符串化),追加即:

var newForm = new FormData();

newForm.append('fileName', file);
newForm.append('api_key', $rootScope.CLOUDINARY_CONFIG.api_key);
newForm.append('signature', signature);
newForm.append(public_id, scope.model.public_id);

等等..

下一步。

将您的内容类型设置为未定义,而不是多部分表单数据。这似乎不直观,但是,实际情况是浏览器会自动为您设置适当的边界,并会自动将内容类型设置回 multipart/formdata。

此外,将 transformRequest 添加到 angular.identity 的配置集。浏览器将尝试序列化您的表单数据,因此您需要通过将 transformRequest 设置为 angular.identity 来阻止它这样做。

整个 $http 请求应该是这样的:

$http.post(url, newForm, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(data){
// success
})
.error(function(err){
// log error
})

另请注意,FormData 很难与您打交道,因为如果您控制 FormData 对象,即 (console.log(newForm)),它将显示:FormData {append: function}

关于javascript - Cloudinary Base64图像在angularjs中上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24298961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com