七牛上传失败
Ⅰ 七牛上传文件bad token怎么解决
小白我遇到的是下面的bad token.原因是自己手拙,粘贴密钥对时 没注意到末尾带过来一个“\n”。删掉就好了
{ResponseInfo:com.qiniu.http.Response@11e21d0e,status:401, reqId:gcsAAAAvj3KulrwV, xlog:X-Log, xvia:, adress:up.qbox.me/180.1数字14:443, ration:0.000000 s, error:bad token}
{"error":"bad token"}
Ⅱ 七牛云存储对接好网站后上传不了图片,但是能获取存储空间里的文件
首先我们先登录阿里旺旺账号,在阿里旺旺面板的下方有一个“淘”字样,单击该按钮。
单击“淘”按钮,会下拉很多选项,在下拉的选项里,我们单击图片空间按钮。
单击图片空间会跳到如图所示页面,这时我们单击菜单栏里的“图片上传”按钮。
单击“图片上传”按钮会出现如图所示,这时我们点击添加图片按钮。点击之后会弹出第二个图的对话框,这时我们选择好要上传的图片,选择好后单击下方的“选好了”按钮。
单击之后会弹出如图对话框,这时我们单击下方的立即上传按钮,点击之后就会弹出第二个图片所示对话框。
在弹出的对话框里,我们单击完成按钮,页面会跳到如图所示,这时我们可以看到刚才的图片已经在图片空间里了。
Ⅲ 七牛存储,上传失败的文件在上传新文件的时候会一并加入队列,怎么可以清空队列,限制上传文件个数呢
找到下载的地址 把它强制删除
Ⅳ 七牛图片前段web上传,点击按钮没反应,浏览器console没任何报错
打开Chrome的审查元素工具,然后切换到Network选项卡,然后看下具体的请求。
Ⅳ 七牛云上传图片报 400错误的一些小坑
最近遇到的坑,后台返回的token和filename都没有问题,上传图片还是报code400,最后发现是因为后端申请七牛云的时候填写的服务器是华南区 而SDK里默认是华东区,导致上传失败。
步骤一:先搜索七牛SDK里的zone0(图一)
步骤二:查看后台申请的区域(图三)
步骤三:把(图二)中的zone2改成你对应的服务区区域。因为我是华南服务器,所以调用了zone2
Ⅵ ios 用七牛sdk上传资源,报405错误是什么情况
相信很多开发者会把图片存放到七牛上,我的web站点也是吧图片存储到七牛上,对于以图片为主的站点,这样可以节省很大带宽。
将图片上传到七牛服务器的重点就是获得上传凭证uploadToken,直接把AccessKey和Secret放到客户端太不安全,容易被反编译。所以需要在服务器端根据AccessKey和Secret动态生成一个uploadToken,然后传回到客户端,客户端通过这个uploadToken将图片上传到七牛服务器。
第一、在服务器端生成uploadToken
//将图片上传到七牛 start
$bucket='七牛空间名称';
$expires = 3600;
$accessKey='去七牛查看';
$secretKey='去七牛查看';
$client = new QiniuClient($accessKey,$secretKey);
$flags = array();
$scope = $bucket;
$deadline = time() + $expires;
$flags['scope'] = $scope;
$flags['deadline'] = $deadline;
$flags['returnBody'] = null;
echo $client->uploadToken($flags);
这里注意一下bucket:七牛空间名称和deadline:uploadToken失效时间,具体可查看一下官网上传凭证介绍
uploadToken($flags)是自己封装的用于生成上传凭证的函数
public function uploadToken($flags) { if(!isset($flags['deadline'])) $flags['deadline'] = 3600 + time(); $encodedFlags = self::urlsafe_base64_encode(json_encode($flags)); $sign = hash_hmac('sha1', $encodedFlags, $this->secretKey, true); $encodedSign = self::urlsafe_base64_encode($sign); $token = $this->accessKey.':'.$encodedSign. ':' . $encodedFlags; return $token; }
public static function urlsafe_base64_encode($str){
$find = array("+","/");
$replace = array("-", "_");
return str_replace($find, $replace, base64_encode($str));
}
第二、下载qiniu-android-sdk-7.0.0.jar和android-async-http-1.4.6并导入项目
第三、android上传图片
由于Android4.0 以后不允许在主线程进行网络连接,所以需要新开个线程来获取上传凭证。
/*
* 上传图片到七牛
*/
private void uploadImg(){
new Thread(new Runnable(){
@Override
public void run() {
//获得七牛上传凭证uploadToken
String token=getUploadToken();
//手机SD卡图片存放路径
String imgPath="";
try {
imgPath=FileUtil.getBasePath()+ "/test.jpg";
} catch (IOException e) {
e.printStackTrace();
}
if(token!=null){
String data = imgPath;
//图片名称为当前日期+随机数生成
String key = getRandomFileName();
UploadManager uploadManager = new UploadManager();
uploadManager.put(data, key, token,
new UpCompletionHandler() {
@Override
public void complete(String arg0, ResponseInfo info, JSONObject response) {
// TODO Auto-generated method stub
Log.i("qiniu", info.toString());
}
}, null);
}
else{
Log.i("fail", "上传失败");
}
}
}).start();
}
FileUtil.getBasePath()使用来获取SD卡基本路径,getRandomFileName()生成一个随机数来命名上传图片,具体方法我在这就不写了。
获得上传凭证的方法也很简单,直接使用httpget和服务器通信,获得第一步中生成的数据即可。(注意10.0.2.2是模拟器提供的特殊IP,等同于在电脑端的环回测试IP127.0.0.1)
/*
* 获得七牛上传凭证uploadtoken
*/
private String getUploadToken()
{
HttpClient client = new DefaultHttpClient();
StringBuilder builder = new StringBuilder();
HttpGet myget = new HttpGet("");
try {
HttpResponse response = client.execute(myget);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
builder.append(s);
}
return builder.toString();
} catch (Exception e) {
Log.i("url response", "false");
e.printStackTrace();
return null;
}
}
通过LOG日志可以看到Qiniu--success,说明上传成功。