我想裁剪头像图像,并使用Laravel jrm2k6 / cloudder将其上传到cloudiary的特定文件夹中,但是上传图像时遇到错误。 谁能帮助我解决问题或显示解决方法?
以下是存储在日志文件中的错误消息。
[2019-10-20 10:39:38] local.ERROR: Invalid Signature 22800853dcbe6c9972b65d99946460f1965a6e06. String to sign - 'folder=media/users/1/avatar×tamp=
1571535576'. {"userId":1,"exception":"[object] (Cloudinary\\Error(code: 401): Invalid Signature 22800853dcbe6c9972b65d99946460f1965a6e06. String to sig
n - 'folder=media/users/1/avatar×tamp=1571535576'. at /Users/kondonator/Development/tiny-services/vendor/cloudinary/cloudinary_php/src/Uploader.ph
p:515)
[stacktrace]
#0 /Users/kondonator/Development/tiny-services/vendor/cloudinary/cloudinary_php/src/Uploader.php(374): Cloudinary\\Uploader::call_api('upload', Array,
Array, '/private/var/tm...')
#1 /Users/kondonator/Development/tiny-services/vendor/cloudinary/cloudinary_php/src/Uploader.php(99): Cloudinary\\Uploader::call_cacheable_api('upload'
, Array, Array, '/private/var/tm...')
#2 /Users/kondonator/Development/tiny-services/vendor/jrm2k6/cloudder/src/JD/Cloudder/CloudinaryWrapper.php(122): Cloudinary\\Uploader::upload('/privat
e/var/tm...', Array)
#3 /Users/kondonator/Development/tiny-services/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(239): JD\\Cloudder\\CloudinaryWrapper
->upload('/private/var/tm...', NULL, Array, Array)
#4 /Users/kondonator/Development/tiny-services/app/Http/Controllers/UserController.php(150): Illuminate\\Support\\Facades\\Facade::__callStatic('upload
', Array)
#5 [internal function]: App\\Http\\Controllers\\UserController->update(Object(Illuminate\\Http\\Request), '1')
以下是UserController.php的代码。
$path = $request->file('avatar')
->getRealPath();
$image = Image::make($path);
$image->crop($request->width, $request->height, $request->x, $request->y)
->resize(200, 200)
->save();
$folder = 'media/users/'.$id.'/avatar';
Cloudder::upload($path, null, ['folder' => $folder], []);
$result = Cloudder::getResult();
$avatar = Cloudder::getPublicId();
.env的最后一部分来自Cloudinary的信息中心->帐户详细信息。
CLOUDINARY_API_KEY=XXXXX
CLOUDINARY_API_SECRET=YYYYY
CLOUDINARY_CLOUD_NAME=ZZZZZ
先谢谢了。
答案 0 :(得分:0)
在folder=media/users/1/avatar×tamp=1571535576
末尾被连接之前的字符串(api_secret
)是正确的,但是应该产生的签名是083dc25c1d1e4a90f84336450f21c9fb59b343f5
。
我建议仔细检查配置(.env)中的CLOUDINARY_API_SECRET
,如果对它进行了任何更改,则应重新启动服务器,以使其生效。
您还可以做的是在命令行上手动生成正确的签名,以仔细检查作为异常一部分抛出的签名。在下面的命令中,将<API_SECRET>
替换为您的实际值:
echo -n "folder=media/users/1/avatar×tamp=1571535576<API_SECRET>" | sha1sum
此外,与该错误无关,但我建议在您的配置中将您的云名称保留为小写。 API响应将全部返回小写形式的url
和secure_url
,使用媒体库生成的URL也是这种情况。请求具有不同大小写的资源将导致CDN处的缓存键不同。