从浏览器错误请求直接上传到 Cloudinary
Direct Upload to Cloudinary from Browser Bad Request
尝试使用以下代码上传到 cloudinary 时出现 400 错误请求错误:
$("input.cloudinary-fileupload[type=file]").cloudinary_fileupload();
$.cloudinary.config({"api_key":"6586856745648955","cloud_name":"some-cloud"});
$http.get("http://localhost:3000/story/secret")
.then(function(res){
var CLOUD_API_SECRET = res.data.CLOUD_API_SECRET;
var obj =
{
"timestamp": Date.now(),
"callback": "http://localhost:3000/cloudinary_cors",
"signature": CLOUD_API_SECRET,
"api_key": "6586856745648955"
};
// var data = JSON.stringify(obj);
$("input[type='file']").attr('data-form-data', obj);
})
.catch(function(err){
console.log("error: ", err);
});
我的前面包含以下内容:
<input name="file" type="file"
class="cloudinary-fileupload" data-cloudinary-field="image_upload"
data-form-data=" ... html-escaped JSON data ... " >
</input>
我也尝试过字符串化,然后对 "obj" 变量进行编码,然后像这样插入:
var data = JSON.stringify(obj);
$("input[type='file']").attr('data-form-data', encodeURI(data));
我得到同样的错误。
如果有任何帮助或建议,我将不胜感激。非常感谢。
这里有几个问题:
- 您的帐户
api_secret
永远不应在您的客户端代码中泄露。
- 签名不是
api_secret
,您应该生成一个基于您的 api_secret
和上传选项的签名。更多信息:http://cloudinary.com/documentation/upload_images#request_authentication。
签名生成必须在服务器端完成。
- Cloudinary 期望签名基于时间戳,以秒为单位而不是毫秒,因此不需要最后 3 位数字。因此,我建议您将时间戳除以 1000 以省略最后 3 位数字(例如,
Date.now()/1000
)
尝试使用以下代码上传到 cloudinary 时出现 400 错误请求错误:
$("input.cloudinary-fileupload[type=file]").cloudinary_fileupload();
$.cloudinary.config({"api_key":"6586856745648955","cloud_name":"some-cloud"});
$http.get("http://localhost:3000/story/secret")
.then(function(res){
var CLOUD_API_SECRET = res.data.CLOUD_API_SECRET;
var obj =
{
"timestamp": Date.now(),
"callback": "http://localhost:3000/cloudinary_cors",
"signature": CLOUD_API_SECRET,
"api_key": "6586856745648955"
};
// var data = JSON.stringify(obj);
$("input[type='file']").attr('data-form-data', obj);
})
.catch(function(err){
console.log("error: ", err);
});
我的前面包含以下内容:
<input name="file" type="file"
class="cloudinary-fileupload" data-cloudinary-field="image_upload"
data-form-data=" ... html-escaped JSON data ... " >
</input>
我也尝试过字符串化,然后对 "obj" 变量进行编码,然后像这样插入:
var data = JSON.stringify(obj);
$("input[type='file']").attr('data-form-data', encodeURI(data));
我得到同样的错误。
如果有任何帮助或建议,我将不胜感激。非常感谢。
这里有几个问题:
- 您的帐户
api_secret
永远不应在您的客户端代码中泄露。 - 签名不是
api_secret
,您应该生成一个基于您的api_secret
和上传选项的签名。更多信息:http://cloudinary.com/documentation/upload_images#request_authentication。 签名生成必须在服务器端完成。 - Cloudinary 期望签名基于时间戳,以秒为单位而不是毫秒,因此不需要最后 3 位数字。因此,我建议您将时间戳除以 1000 以省略最后 3 位数字(例如,
Date.now()/1000
)