如何上传base64图片到七牛云存储,然后返回图片url呢??

如何上传base64图片到七牛云存储,然后返回图片url呢??


前言

在做项目时,有时候我们需要把canvas中的图画导出成为图片,但我们知道导出来的图片是base64的字符流图片,而这种编码图片在手机端是无法长按保存的。那该怎么办呢?怎么才能在手机端也能保存这种图片呢?

解决方法:

我们可以先把base64编码图片上传到七牛云存储,然后通过返回的url,给到img标签中,这样就可以实现base64移动端的长按保存了。


上传到七牛云存储的条件:

  1. 注册七牛云存储账号,开通一个云空间(废话)。
  2. 因为上传base64编码流图片到七牛需要知道原图片(即文件流)的图片的大小,怎么计算呢?参考- base64图片编码大小与原图文件大小之间的关系
  3. 服务端获取的上传token(需要通过七牛的AccessKey和SecretKey通过后端服务器获取,不过有大神做好了在线生成token的工具,如果相信他/她的话,可以使用- 七牛上传凭证生成器,不过AccessKey和SecretKey还是不要暴露为好)

下面举例:

    /*picBase是base64图片带头部的完整编码*/
    function putb64(picBase){

            /*picUrl用来存储返回来的url*/
            var picUrl;

            /*把头部的data:image/png;base64,去掉。(注意:base64后面的逗号也去掉)*/
            picBase=picBase.substring(22);

            /*通过base64编码字符流计算文件流大小函数*/
            function fileSize(str)
            {
                var fileSize;
                if(str.indexOf('=')>0)
                {
                    var indexOf=str.indexOf('=');
                    str=str.substring(0,indexOf);//把末尾的’=‘号去掉
                }

                fileSize=parseInt(str.length-(str.length/8)*2);
                return fileSize;
            }

            /*把字符串转换成json*/
            function strToJson(str)
            { 
                var json = eval('(' + str + ')'); 
                return json; 
            } 


            var url = "http://up.qiniu.com/putb64/"+fileSize(picBase); 
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange=function()
            {
                if (xhr.readyState==4){
                    var keyText=xhr.responseText;

                    /*返回的key是字符串,需要装换成json*/
                    keyText=strToJson(keyText);

                    /* http://ojvh6i96g.bkt.clouddn.com/是我的七牛云空间网址,keyText.key 是返回的图片文件名*/
                    picUrl="http://ojvh6i96g.bkt.clouddn.com/"+keyText.key;
                    alert(picUrl);

                }
            }
            xhr.open("POST", url, true); 
            xhr.setRequestHeader("Content-Type", "application/octet-stream"); 
            xhr.setRequestHeader("Authorization", "UpToken 这里填写你的token(注意前面的UpToken后面有空格)"); 
            xhr.send(picBase);

         }

以上是文章主要内容,如有错误,请多多交流
更多注意事项请参考- 七牛帮助文档
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
微信小程序调用uploadFile接口可以向七牛云存储上传图片。首先,我们需要获取到七牛云上传凭证(token),然后使用微信小程序的uploadFile接口将图片上传七牛云。 具体步骤如下: 1. 在小程序后台或自己的服务器上请求七牛云上传凭证。可以使用七牛云的SDK或者API进行请求。 2. 在小程序中调用wx.uploadFile接口,设置url七牛云上传接口,formData中设置为 {key: '上传的文件在七牛云的保存路径', token: '七牛云上传凭证'}。 3. 小程序通过wx.chooseImage接口选择要上传图片,并将选择的图片临时路径传给wx.uploadFile的filePath参数。 4. 小程序调用wx.uploadFile接口进行图片上传上传成功后会返回七牛云图片的保存路径。 需要注意的是,在上传图片之前,我们可能需要对图片进行压缩、裁剪或者添加水印等处理,以满足七牛云保存图片的要求。 同时,七牛云对于图片上传还提供了许多其他的功能,如图片样式处理、图片持久化等,我们可以根据需要进行设置。 使用七牛云存储可以方便地进行图片上传与管理,并且具有高可靠性和高性能。为了保证数据的安全性,我们还可以设置七牛云的访问控制,限制只有授权用户才能访问上传图片。 总之,通过微信小程序调用uploadFile接口向七牛云存储上传图片,可以实现图片的高效、安全地存储和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值