这次做了vue页面的图片上传功能,不带裁剪功能的!

首先是html代码,在input框上添加change事件,如下:

  1.  
    <ul class="clearfix">
  2.  
    <li v-if="imgs.length>0" v-for='(item ,index ) in imgs'>
  3.  
    <img :src="item">
  4.  
    </li>
  5.  
    <li style="position:relative" v-if="imgs.length>=6 ? false : true">
  6.  
    <img src="../../assets/img/addimg.png"><input class="upload" @change='add_img' type="file">
  7.  
    </li>
  8.  
    </ul>

我这里做了图片数量的限制,最多6张。

然后是data数据,如下:

  1.  
    data () {
  2.  
    return {
  3.  
    imgs: [],
  4.  
    imgData: {
  5.  
    accept: 'image/gif, image/jpeg, image/png, image/jpg',
  6.  
    }
  7.  
    }
  8.  
    }

imgs数组是放图片路径的,页面显示图片就是循环这个数组,imgData是判断图片类型的。

接下来是最重要的methods里面的方法,具体如下:

  1. <code class="language-html">add_img(event){
  2. let reader =new FileReader();
  3. let img1=event.target.files[0];
  4. let type=img1.type;//文件的类型,判断是否是图片
  5. let size=img1.size;//文件的大小,判断图片的大小
  6. if(this.imgData.accept.indexOf(type) == -1){
  7. alert('请选择我们支持的图片格式!');
  8. return false;
  9. }
  10. if(size>3145728){
  11. alert('请选择3M以内的图片!');
  12. return false;
  13. }
  14. var uri = ''
  15. let form = new FormData();
  16. form.append('file',img1,img1.name);
  17. this.$http.post('/file/upload',form,{
  18. headers:{'Content-Type':'multipart/form-data'}
  19. }).then(response => {
  20. console.log(response.data)
  21. uri = response.data.url
  22. reader.readAsDataURL(img1);
  23. var that=this;
  24. reader.onloadend=function(){
  25. that.imgs.push(uri);
  26. }
  27. }).catch(error => {
  28. alert('上传图片出错!');
  29. })
  30. },</code>

首先是获取你选择的图片,判断图片的类型和大小,然后以form表单的形式提交到后台,后台会返回给你这个图片的线上路径,你把后台返回的图片路径push到图片数组里面就可以了。

一般情况下还有删除图片的方法,就是把图片数组里的那个路径删除掉,把数据提交到后台,告诉后台删除了哪张图片就可以了。

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
body {
margin: 0;
}

html,
body {
height: 100%;
}

#box {
width: 100%;
height: auto;
}

.img-d {
margin-top: 30px;
width: 300px;
height: 300px;
text-align: center;
position: relative;
}

.img-d span {
display: inline-block;
width: 100%;
height: 100%;
background-image: url("imagess/kmhvbjvb.jpg");
cursor: pointer;
background-size: 100% 100%;
background-repeat: no-repeat;
}

#up {
/* display: none; */
}

.rems {
display: inline-block;
width: 25px;
height: 25px;
background: red;
border-radius: 50% 50%;
font-size: 17px;
position: absolute;
top: -6px;
right: -6px;
color: white;
text-align: center;
line-height: 25px;
cursor: pointer;
}
</style>
</head>

<body>
<div id="box">
<div class="img-d">
<span class="up-s"></span>
<input type="file" id="up" multiple name="files">
</div>
</div>
<script>
// span的点击事件
var addBtn = document.querySelector('.up-s');
addBtn.addEventListener('click', function () {
document.querySelector('#up').value = null;
document.querySelector('#up').click();
return false;
}, false);

// 处理input点击之后的change事件
document.getElementById("up").addEventListener("change", function (e) {
var files = this.files;
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onload = function (e) {
var dx = (e.total / 1024) / 1024;
if (dx >= 2) {
alert("文件大小大于2M");
return;
}
var result = this.result;//这里就是转化之后的DataURL
addBtn.style.backgroundImage = "url(" + result + ")";
}
var rem = document.createElement("i");
rem.setAttribute("class", "rems");
rem.innerHTML = "x";
document.querySelector(".img-d").appendChild(rem);
rem.addEventListener('click', function () {
this.style.display = "none";
addBtn.style.backgroundImage = "url(imagess/kmhvbjvb.jpg)";
});
})

</script>
</body>

</html>

vue 图片上传功能的更多相关文章

  1. H5 利用vue实现图片上传功能。

    H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...

  2. vue图片上传组件

    前言:很多项目中都需要用到图片上传功能,而其多处使用的要求,为了避免重复造轮子,让我决定花费一些时间去深入了解,最终封装了一个vue的图片上传组件.现将总结再次,希望有帮助. Layout <d ...

  3. vue 图片上传

    功能说明: 1.调用手机拍照功能 2.调用相册功能 3.图片上传功能 4.图片预览功能 5.图片删除功能 关键点: .input 新增multiple .accept="image/*处理I ...

  4. thinkphp达到UploadFile.class.php图片上传功能

    片上传在站点里是非经常常使用的功能.ThinkPHP里也有自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php).方便于我们去实现图片上传功能,以 ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能

    日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...

  6. PHP语言学习之php做图片上传功能

    本文主要向大家介绍了PHP语言学习之php做图片上传功能,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 今天来做一个图片上传功能的插件,首先做一个html文件:text.php < ...

  7. [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站

    前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...

  8. 给DEDECMS广告管理中增加图片上传功能

    dedecms的广告管理功能稍微有点次,本文就是在dedecms广告管理原有的基础上增加广告图片上传功能. 安装方法,对应自己的dedecms版本下载对应的编码然后解压把里面的文件放在后台目录覆盖即可 ...

  9. 前端丨如何使用 tcb-js-sdk 实现图片上传功能

    前言 tcb-js-sdk 让开发者可以在网页端使用 JavaScript 代码服务访问云开发的服务,以轻松构建自己的公众号页面或者独立的网站等 Web 服务.本文将以实现图片上传功能为例,介绍 tc ...

随机推荐

  1. 12-5-上下文this

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 华为手机honor5c root 方法备份

    1.首先获取官方解锁码: https://www.emui.com/cn/unlock_detail 2.用 adb 执行 root 命令,如下: 498  adb devies 499  adb d ...

  3. Pascal代码自动格式化

    const WEnter=; key=; next_line:..WEnter]of string=(';','begin','else','then','repeat','do','var'); k ...

  4. Docker配置JDK1.8

    1.安装Docker(菜鸟教程有) https://www.runoob.com/docker/centos-docker-install.html 2.docker下载centos镜像(用作配置jd ...

  5. SQLite C++操作种

    SQLite C++操作类 为了方便SQLite的使用,封装了一个SQLite的C++类,同时支持ANSI 和UNICODE编码.代码如下:   头文件(SQLite.h) /************ ...

  6. Joomla - 部署(线上部署)

    一.线上部署 线上部署可以理解为把本地网站迁移到线上,使用 akeeba backup 进行备份和迁移即可 参考 Joomla - akeeba backup(joomla网站备份.迁移扩展)的第三. ...

  7. 深入浅出 Java Concurrency (26): 并发容器 part 11 Exchanger[转]

    可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchanger 可能被视为 Synchro ...

  8. Windows的进程间通信

    对于任何一个现代的操作系统,进程间通信都是其系统结构的一个重要组成部分.而说到Windows的进程(线程)间通信,那就要看是在什么意义上说了.因为正如"Windows的跨进程操作" ...

  9. 《DSP using MATLAB》Problem 8.2

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  10. 《DSP using MATLAB》Problem 7.37

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...