基于vue axios上传图片到七牛云

1、优点

  • 移动端 和 pc 端通用
  • 可以自己添加上传进度条
  • 解释了一些七牛的知识点

缺点:一次不能上传多张图片,不能预览,不能裁剪图片。

2、代码

<!--html-->
<input @change="uploadInputchange"  id="uploadFileInput" type="file" accept="image/*">
//js
import axios from 'axios';

methods: {
    //触发input change事件
    uploadInputchange(){
        let file = document.getElementById("uploadFileInput").files[0];   //选择的图片文件
        this.uploadImgToQiniu(file);
    },
    //上传图片到七牛
    uploadImgToQiniu(file){
        const axiosInstance = axios.create({withCredentials: false});    //withCredentials 禁止携带cookie,带cookie在七牛上有可能出现跨域问题
        let data = new FormData();
        data.append('token', this.params.token);     //七牛需要的token,叫后台给,是七牛账号密码等组成的hash
        data.append('file', file);
        axiosInstance({
            method: 'POST',
            url: 'http://upload.qiniup.com/',  //上传地址
            data: data,
            timeout:30000,      //超时时间,因为图片上传有可能需要很久
            onUploadProgress: (progressEvent)=> {
                //imgLoadPercent 是上传进度,可以用来添加进度条
                let imgLoadPercent = Math.round(progressEvent.loaded * 100 / progressEvent.total);
            },
        }).then(data =>{
            document.getElementById("uploadFileInput").value = ''        //上传成功,把input的value设置为空,不然 无法两次选择同一张图片
            //上传成功...  (登录七牛账号,找到七牛给你的 URL地址) 和 data里面的key 拼接成图片下载地址
        }).catch(function(err) {
            //上传失败
        });
    }
},

3、遇到的问题

3.1、微信等X5内核浏览器不能选择图片(点击图片选择没有效果),

需要改变input accept 的值,很奇怪

<!--错误-->
<input @change="uploadInputchange"  id="uploadFileInput" type="file" accept="image/jpeg, image/png, image/gif">
<!--正确-->
<input @change="uploadInputchange"  id="uploadFileInput" type="file" accept="image/*">
3.2、input不能连续两次 选择同一张图片

因为我们是用input的change事件 触发 成功选择图片,change事件触发是需要 input 的value值 改变,但是连续两次选择同一张图片,value值并没有改变,所以就不会触发input的 change事件。

所以上传图片成功,就把需要value值清空

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,188评论 19赞 139
  • 刚刚看了两篇文章都是与癌症有关的,看第一篇的时候感到眼泪在眼眶里打转,为女主角受到的病痛的折磨难过,为她有个不离不...
    博薇阅读 342评论 0赞 1
  • 昨天刚拿到驾照,今早一早就去换了上海驾照。So happy! 大家都知道,在上海考驾照,又贵又慢。于是我就跑去考了...
    拉格朗日星阅读 1,353评论 0赞 3
  • 在灵魂一角可能有着一座燃烧着炽热火焰的火炉,然而无人前来取暖;过客只是瞥见烟囱的一抹。 ——文森特·梵高 ​​​
    可口可乐花花阅读 224评论 0赞 0

友情链接更多精彩内容