图片上传
略有瑕疵,凑合能用,先当个笔记了,以后有更好的再换。
css
1 <style> 2 /*外层div*/ 3 .input-file-box{ 4 border: 1px solid gray; 5 width: 5rem; 6 height: 5rem; 7 margin-left:.5rem; 8 position: relative; 9 text-align: center; 10 border-radius: 1rem; 11 } 12 /*文字描述*/ 13 .input-file-box > span{ 14 display: block; 15 width: 3rem; 16 height: 1rem; 17 position: absolute; 18 top: 1rem; 19 bottom: 0; 20 left: 1rem; 21 right: 0; 22 /* margin: auto; */ 23 color: gray; 24 } 25 /*input框*/ 26 .input-file-box #uploadfile{ 27 opacity: 0; 28 width: 5rem; 29 height: 5rem; 30 cursor: pointer; 31 } 32 33 .tu{ 34 /* background:yellow; */ 35 } 36 #bushang{ 37 min-height:10rem; 38 width:100%rem; 39 /* background:pink; */ 40 } 41 #img-box{ 42 /* background:purple; */ 43 min-height:10rem; 44 width:100%; 45 float:left; 46 } 47 #bushang:after{ 48 content: ""; 49 height: 0; 50 clear: both; 51 overflow: hidden; 52 display: block; 53 visibility: hidden; 54 } 55 #img-box .pingxia{ 56 height:8rem; 57 width:8rem; 58 /* float:left; 59 margin-left:.4rem; 60 margin-top:.1rem; */ 61 } 62 #img-box div h1{ 63 position: absolute; 64 right:0rem; 65 top:0.1rem; 66 height:1.5rem; 67 width:1.5rem; 68 } 69 #img-box div{ 70 float:left; 71 margin-left:.4rem; 72 margin-top:.1rem; 73 position: relative; 74 height:8rem; 75 width:8rem; 76 } 77 #img-box .shan{ 78 height:1.5rem; 79 width:1.5rem; 80 position: absolute; 81 top:0; 82 right:0; 83 z-index: 100; 84 } 85 </style>
html
<body> <form action=""> <div class="input-file-box"> <span>点击上传图片</span> <input type="file" id="uploadfile" multiple> </div> <div id="bushang"> <div id="img-box"></div> </div> </form> </body>
js
1 <script> 2 // 传图 3 var shuliang = 0 4 var shuliang111 = 0 5 $('#uploadfile').on('change',function(){ 6 shuliang = shuliang + this.files.length 7 // 如果没有选择图片 直接退出 8 if(this.files.length <=0){ 9 return false; 10 } 11 // 判断数量 - 上 12 if(shuliang >= 10){ 13 var con=window.confirm('最多只能添加九张图片'); 14 if(con==true){ 15 shuliang = shuliang111 16 return; 17 } 18 else{ 19 shuliang = shuliang111 20 return; 21 } 22 } 23 shuliang111 = shuliang111 + this.files.length 24 //判断数量 - 下 25 var formData = new FormData(); 26 for (i = 0; i < this.files.length; i++){ 27 formData.append('pic1'+'['+i+']',this.files[i]); 28 } 29 $.ajax({ 30 url:'ajax上传地址', 31 type:'post', 32 data:formData, 33 cache: false, //上传文件不需要缓存 34 beforeSend:function (){ 35 $("#loading").show(); //上传之前启动遮罩 36 }, 37 processData: false, // 告诉jQuery不要去处理发送的数据 38 contentType: false, // 告诉jQuery不要去设置Content-Type请求头 39 dataType:'json', 40 success:function(data){ 41 if(data.error == 0){ 42 var c = data.info.split(","); 43 c.pop() 44 for(var i = 0;i < c.length;i++){ 45 var div = document.createElement('div'); 46 var h1 = document.createElement('h1'); 47 console.log("这是动态渲染时候的图片路径",c[i]) 48 div.innerHTML='<img class="pingxia" src="'+c[i]+'" />'; 49 h1.innerHTML='<img class="shan" src="http://7niuyun.xunlongfuwu.com/20191022145616.jpg" />'; 50 div.appendChild(h1) 51 document.getElementById("img-box").appendChild(div); 52 } 53 // 删除渲染的图片 54 $(".shan").click(function(){ 55 shuliang = shuliang - 1; 56 shuliang111 = shuliang111 - 1; 57 var index = $('.shan').index(this) 58 $("#img-box").find("div")[index].remove() 59 }) 60 $("#loading").hide(); //关闭遮罩 61 }else{ 62 //不成功处理 63 $("#loading").hide(); 64 } 65 } 66 }) 67 }) 68 </script>
先用ajax传到服务器,再根据服务器返回的地址动态渲染,最后根据需要提交。(可以在动态渲染的时候多创建一个input隐藏域,然后用表单提交。)