微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

七牛云 使用python sdk 上传图片提示{"error":"key doesn't match with scope"}

经过各种百度查询结果如下:

        key doesn't match with scope 报错大部分原因是由于您在上传token中指定的key 与上传方法中设置的不一致导致的

第一种解决办法:

       1.使用python sdk获取token值时,需要填写key值,该值是保存到七牛后的文件

# -*- coding: utf-8 -*-
# Flake8: noqa
from qiniu import Auth
# 需要填写你的 Access Key 和 Secret Key
access_key = ''
secret_key = ''
# 构建鉴权对象
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = 'chenxm'
# 上传七牛后保存的文件名
key = '11112.jpg'
# 生成上传 Token,可以指定过期时间等
# 上传策略示例
# https://developer.qiniu.com/kodo/manual/1206/put-policy
policy = {
    'callbackUrl':'',    'callbackBody':'',    'persistentOps':'',}
# 3600为token过期时间,秒为单位。3600等于一小时
token = q.upload_token(bucket_name, key, 3600, policy)
print(token)

2. 在上传的form表单中,填写key值和token,就可以上传成功

<!DOCTYPE html>
<html>
<head>
    <Meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="http://upload.qiniu.com/"
 enctype="multipart/form-data">
    <input name="key" type="hidden" value="11112.jpg">
    <input name="token" type="hidden" value="i_GvJMTram7mR0BJKR3rxueh8kGT90wRstg0YVaQ:I0b48vEmdCglrQsw3TxEg88MZRw=:eyJzY29wZSI6ImNoZW54bToxMTExMi5qcGciLCJjYWxsYmFja1VybCI6IiIsImRlYWRsaW5lIjoxNTA0NjAyOTAyLCJwZXJzaXN0ZW50T3BzIjoiIiwiY2FsbGJhY2tCb2R5IjoiIn0=">
    <input name="file" type="file"/>
    <input name="accept" type="hidden"/>
    <button>提交</button>
</form>
</body>
</html>

   3. 程果结果如下:

{"hash":"FtRXiT5UWdCKMsUoOfowBRLL9ctz","key":"11111.jpg"}

第二种解决方法:

key 如果不想要输入值,也就是不想要重新命名保存到七牛文件名时,upload_token中传入key应该写成 key=None,这样就解决上传文件报错提示key doesn't match with scope。

因为{'scope':'七牛存储空间名字:""'},如果七牛存储空间名字后面带一个冒号,代表指定了一上传的key,而这个key的值为"",就是一个空字符串,所以上传才会错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐