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] 举报,一经查实,本站将立刻删除。