我正在使用cloudinary在我的网页上上传照片。我在网页上添加了一个新功能(facebook登录),现在当我像以前一样上传照片时,cloudinary会抛出一个错误。
“/home/ubuntu/workspace/YelpCamp/node_modules/cloudinary/lib/utils.js:982抛出“必须提供api_密钥”;^必须提供api_密钥”
API_密钥、API_密钥和CLOUD_名称保存在。env文件,这些都是正确的。
var express = require("express");
var router = express.Router();
var Campground = require("../models/campground");
var middleware = require('../middleware') ; //because of the index.js default name
var geocoder = require('geocoder');
///////////////////////////////////////
// MULTER
var multer = require('multer');
var storage = multer.diskStorage({
filename: function(req, file, callback) {
callback(null, Date.now() + file.originalname);
}
});
var imageFilter = function (req, file, cb) {
// accept image files only
if (!file.originalname.match(/\.(jpg|jpeg|png|gif)$/i)) {
return cb(new Error('Only image files are allowed!'), false);
}
cb(null, true);
};
var upload = multer({ storage: storage, fileFilter: imageFilter});
///////////////////////////////////////
//CLOUDINARY
var cloudinary = require('cloudinary');
cloudinary.config({
cloud_name: process.env.CLOUD_NAME,
api_key: process.env.CLOUD_KEY,
api_secret: process.env.CLOUD_SECRET
});
router.post('/', middleware.isLoggedIn, upload.single('image'), function(req, res) {
console.log(req.user);
//GEOCODER
geocoder.geocode(req.body.location, function (err, data) {
//CLOUDINARY UPLOAD
cloudinary.uploader.upload(req.file.path, function(result) {
var image = {
path: result.secure_url,
id: result.public_id
};
var name = req.body.name;
var price = req.body.price;
var description = req.body.description;
if(req.user.facebook.username) {
var username = req.user.facebook.username;
} else {
username = req.user.local.username;
}
var author = {
id: req.user._id,
username: username
};
if(!data.results[0]) {
var lat = 90;
var lng = 0;
var location = "North Pole";
} else {
lat = data.results[0].geometry.location.lat;
lng = data.results[0].geometry.location.lng;
location = data.results[0].formatted_address;
}
var newCampground = {name: name, price: price, image: image, description: description, author: author, location: location, lat: lat, lng: lng};
//create
Campground.create(newCampground, function(err, result) {
if(err) {
console.log(err);
} else {
console.log(result);
res.redirect('/campgrounds');
}
});
});
});
});
html prettyprint-override"><% include ../partials/header %>
<div class="row">
<h1 style="text-align: center;">Create a New CampGround</h1>
<div style='width: 30%; margin: 30px auto;'>
<form action='/campgrounds' method='POST' enctype="multipart/form-data">
<div class='form-group'>
<label for="name">Name</label>
<input class="form-control" id="name" type='text' name='name' placeholder='Name'>
</div>
<div class='form-group'>
<label for="price">Price</label>
<input class="form-control" id="price" type='number' name='price' placeholder='price' min="0.01" step="0.01">
</div>
<div class='form-group'>
<label for="image">Image</label>
<input type="file" id="image" name="image" accept="image/*" required>
</div>
<div class='form-group'>
<label for="description">Description</label>
<input class="form-control" id="description" type='text' name='description' placeholder='Write description'>
</div>
<div class="form-group">
<label for="location">Location</label>
<input class="form-control" type="text" name="location" id="location" placeholder="Yosemite National Park, CA">
</div>
<div class='form-group'>
<button class="btn btn-lg btn-default btn-primary btn-block">Submit!</button>
</div>
</form>
<a href="/campgrounds"> Go Back </a>
</div>
</div>
<% include ../partials/footer %>
你能试着把API密钥直接放在你的代码中,看看这是否有效吗。您还可以添加一个print语句,查看API密钥的响应
原因可能是你的js文件没有包含require('dotenv')。config()
尝试添加此代码,然后运行代码。
cloudinary配置值必须是字符串,否则将无法工作。在cloudinary段中以以下任一方式配置代码:
1a:CloudinaryConfig。js:
cloudinary.config({
cloud_name: process.env.CLOUD_NAME,
api_key: process.env.CLOUD_KEY,
api_secret: process.env.CLOUD_SECRET
});
1b:。环境
CLOUDINARY_CLOUD_NAME='sample'
CLOUDINARY_API_KEY='874837483274837'
CLOUDINARY_API_SECRET='a676b67565c6767a6767d6767f676fe1'
2:将cloudinary提供的值直接放入代码中:
cloudinary.config({
cloud_name: 'sample',
api_key: '874837483274837',
api_secret: 'a676b67565c6767a6767d6767f676fe1'
});
注意:确保您不会出于安全原因公开配置值。如果要将代码提交给github这样的公共回购,请使用。gitignore删除存储秘密信息的任何文件。
查看cloudinary文档以获取更多参考:https://cloudinary.com/documentation/node_integration.
我是一名学生,不熟悉Cloudinary和API证书。我试图在我的应用程序中使用Cloudinary存储和图像上传。在添加凭据并通过命令运行rails凭据:edit之后,我无意中按下了凭据上的控件C。现在,当我试图上传图像时,我得到了以下错误。这可能是因为我按下了control c,或者是其他API键错误。我怎样才能修复这个错误?
AndroidManifest。xml 在我上传文件的活动中,我在MediaManager中进行了初始化 我用它的uri上传了这个文件: 问题是我收到一个错误。我需要未签名上传的api密钥吗?
我想编写一个函数,返回一个布尔值,指示具有指定public_id的图像是否已经存在于我的Cloudinary空间中。 我可以使用以下代码将结果记录到控制台: 但是,我想将结果布尔值传递给另一个函数。使用返回语句会导致记录: 这与javascript Promises有关。不过,我似乎无法重组我的代码以使其正常工作。任何帮助都将不胜感激。
Jekyll Cloudinary Liquid tag jekyll-cloudinary is a Jekyll plugin adding a Liquid tag to ease the use of Cloudinary for responsive images in your Markdown/Kramdown posts. It builds the HTML for respon
我刚刚开始学习cloudinary和node JS,我不确定为什么我无法覆盖api resources_by_标签返回的10个图像的默认限制。因为在node JS的文档中没有关于如何调用可选参数的示例(我至少可以找到),所以我很可能在API语法中有错误:
嗨,我正在创建一个简单的注册表单与django框架和mongodb。以下是我的观点: 以下是我的模型: 下面是我的<code>表单。py</code> 以下是加载 SignUpview 回溯时收到的回溯值错误: 内部 39 中的文件“C:\程序文件\Python35\lib\site-packages\django\core\处理程序\exception.py”。响应 = get_response