element UI+七牛云快速搭建图片服务器

最进在做网站的后台管理功能,需要能够对数据库的文章进行“增,删,改,查”,但是遇到了图片保存的问题,如果采用前端上传图片至后端,然后后端保存,数据库存储图片的相对路径,这种方式感觉有点麻烦,于是就在寻求更简单的解决方案,那么有没有一种前端上传图片存储,直接返回图片外链的解决方案呢?

​ 最终,我选择了element UI +七牛云对象存储来快速搭建图片服务器的解决方案。

element UI

element UI是饿了么出品的一套基于vue的开元UI组件库,提供了非常强大的文件上传功能,只要指定上传url就可以使用ajax实现图片的上传,并且支持拖拽功能。

七牛云对象存储

在七牛网注册后并且实名认证后会有10G的永久免费的对象存储,我们利用这10个G的存储基本可以满足我们的日常需要。

具体实现

1.注册七牛云

首先,注册七牛云,并且完成实名认证(七牛云的实名认证可以通过支付宝来授权验证,很方便),完成后会在个人中心->秘钥管理中看到两个秘钥AccessKey/SecretKey,然后创建自定义名字的对象存储空间,

在创建存储空间的时候,可以选择私人空间,但是图片的外链访问都需要秘钥,公共空间则不需要。

为了实现上传,我们还需要生成上传凭证,关于凭证,可以参看文档,并且在文档结束后还有demo,因为是个人项目,为了简单,我直接从demo中生成了deadline为1000多小时的秘钥,确保不会过期,

填入ak,sk,以及bucketName(就是开始创建的对象存储空间的名字),deadline修改demo的源代码再重新运行即可。

生成token后,就可以实现上传了。

2.引入element UI

关于element UI的安装和引入可以参见官网的文档,引入完成后就可以在vue文件中的template中使用文件上传组件,注意,上传组件默认是自动上传的,即选择完图片就可以直接上传,不需要额外的事件来触发。

代码如下:

<el-upload
    action="http://upload-z1.qiniu.com"  
    :drag="true"
    :on-success="handleAvatarSuccess"
    :on-error="handleError"
    :before-upload="beforeAvatarUpload"
    :data="postData">
    ![](imageUrl)
    <i class="el-icon-upload"></i>
    <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em>      </div>
    <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不      超过500kb</div>
</el-upload>

渲染效果:

参数说明:

action是上传的URL,为必选项,
drag表示是否支持拖拽
on-success钩子,上传成功
on-error上传失败
before-upload上传之前,可以用来判断上传类型是否符合要求,不符合停止上传
data是一个对象,用来表示上传时附带的额外参数

这个URL是由七牛云提供,在创建存储空间的时候会选择地区,不同的地区有不同的URL,而且http和https也是不同的URL,具体可以参见官方文档。

由于七牛云的上传需要秘钥,所以需要定义额外的data来上传附带的额外参数。

script标签中,定义一个对象保存token

postData: {
    token: 'your token'
}

js代码:

methods: {
      handleAvatarSuccess(res, file) {   //上传成功后在图片框显示图片
        this.imageUrl ='http://oq34prjoz.bkt.clouddn.com/'+ res.key
        console.log(res)
      },
      handleError(res) {   //显示错误
        console.log(res)
      },
      beforeAvatarUpload(file) {    //在图片提交前进行验证
        const isJPG = file.type === 'image/jpeg'
        const isPNG = file.type === 'image/png'
        const isLt2M = file.size / 1024 / 1024 < 2

        if (!isJPG&&!isPNG) {
          this.$message.error('上传头像图片只能是 JPG/PNG 格式!')
        }
        if (!isLt2M) {
          this.$message.error('上传头像图片大小不能超过 2MB!')
        }
        return isJPG && isPNG && isLt2m
      }
    }

上传成功后会返回一个对象,包含一个hash和一个key,然后前边加上七牛云为你随机分配的域名就是图片的外链,

http://oq34prjoz.bkt.clouddn.com/'+ res.key

最终结果如下:

在七牛云的管理平台中,就可以看到我们上传的图片了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容