html实现图片上传

html-css09

html实现图片上传,第1张

html:

<section class="upload-section">

  <article class="upload-piclist">

    <div class="upload-file">

        <input type="file" id="file" accept="image/*" multiple onchange="imgChange()"/>

    </div>

  </article>

</section>

css:

/* body {

  margin: 0

  padding: 0

  max-width: 414px

  margin: 0 auto

  } */

  .upload-fh {

  background-image: url('data:image/pngbase64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAD1klEQVRoQ+XbTYhWVRgH8P8fwZUguFKi2pShbvqg2lhhG0PJlc40zQg62WhDg+jklIo1wViUNgwVTGSWWMngyvCjVdLHLrHaJaOBIIK2DHL7lweegcvL48D7vveee7xztu+d972/Ofec8zznPJe4T5qkRQC2AVgP4A8AMySvt3v7bPcP6rhe0lIAJwFsKvz+CZLb272f7MGSHnDsiy24WZKPNQosyUDWs88EsEGS3zQGLOkpx64OUG+T/LhdrF2f5SMt6QXHPhSghklOd4LNEixpo2OXBaitJL/rFJsdWFKvYxe3oO4A6Cd5phtsVmBJrwH4KgD9C+BVkj91i80GLGk3gKkA9I9jfy8DmwVY0kEAEwHoL8f+XRa2drCkDwG8E4B+A9BH8maZ2FrBkj4D8GYA+hHAKyT/KxtbG1iSRUiWCLS2045VFdjkYEm23HwPYHMAOk5yR1XQue9NFmlJskDCsC8FqCmSe6rGJuthSRYiGnZtgJogeSgFNglYkgX/hn08QI2RPJIKWzlYkqV1hn0kQL1B8ouU2ErBkixhN+zyADVA0j5L3iqZtCTZVoyBlrSILAmwNfZscqn/YOlgSf0AohTOkoBekj/XhS39kZa0E0A0Li0JMOzlOrGlgiWNAjgagCwJ6CF5tW5saWBJ7wEYD0CWBBj2Vg7YUsCSbB19KwBdcOz/uWC7BkuyzbRdAchOBfpygs7dS8eztKRvAQwEqGMkh3LEdtzDkj4CMBagJkna5JVt66iHJUX56jjJ97OVdhN4SLJtGdueaW3N7GFTLqgxPNetC2qWLqDtUGtf8Hif93CyOetwAf0ugGjC+tXRzYm0Cui9AD4JevpPRzcnli6gXwfwZYC+5mGm4WttHa3D892xJAspTwXX3Pae/qVOcelgX7JednS042F58bm60JWAHb3Ot3lWBDg7N5qpA10Z2NFPO/rRADdE8lhqdKVgR69y9BMBbpTkZEp05WBHP+jo5wJc0qQjCdjRdrZkOfSGAJ0s6UgGdrSdHhq6J0An2ThICi4EKMcBDAZom7mtgKUZ58NFoCQrYrFiltZmSYehm1MBUOjpwwAOBGhLOgzdnBqPAno/gA8CtMXdhr5S5rJVyxhuBUgaAfBpALOkw9CXykJnAfYZ3Iq9vw5glnQY+mIZ6GzAjt7iJ49RraWhf+gWnRXY0RaY2Frd/GrawkT2vFfVPhz0aLPqpQvoJx29JkA3qyK+gF7p6GcD9AjJz9sd09mN4WDJutdbLTdIRq8IzPs/yB7sE9nCeW+p8Hjbm2nDAKwcahbAdGPfTGt3nM53/V00ckNMKWY8LAAAAABJRU5ErkJggg==')

  background-repeat: no-repeat

  background-size: 100% 100%

  height: 30px

  width: 30px

  }

  .upload-hedaer {

  height: 55px

  display: grid

  grid-template-columns: repeat(3, 1fr)

  padding: 0 10px

  box-sizing: border-box

  align-items: center

  text-align: center

  background: #287cff

  color: #fff

  border-bottom: 1px solid #efefef

  font-size: 19px

  }

  .upload-hedaer div:last-child {

  text-align: right

  }

  .upload-textarea {

  width: 100%

  height: 60px

  font-size: 28px

  border: 1px solid #efefee

  max-height: 300px

  }

  .upload-article-text {

  width: 100%

  padding: 10px

  box-sizing: border-box

  }

  .upload-file {

  position: relative

  background: url('../images/z_add.png') no-repeat 50%/100% 100%

  /* width: 100px*/

  height: 120px

  order: 9

  }

  .upload-piclist {

  padding: 0 10px

  box-sizing: border-box

  display: grid

  grid-template-columns: repeat(3, 120px)

  justify-content: space-between

  grid-gap: 14px

  }

  #file {

  width: 100%

  height: 100%

  opacity: 0

  }

  .upload-Picitem {

  width: 100%

  height: 120px

  }

  .upload-Picitem>img {

  width: 100%

  height: 100%

  object-fit: cover

  }

  .submit {

  padding: 15px 0

  background-color: #287cff

  color: #fff

  text-align: center

  margin: 10px

  font-size: 20px

  border-radius: 10px

  }

  .upload-sm {

  padding: 10px

  box-sizing: border-box

  color: gray

  }

  .upload-sm ol>li {

  margin-bottom: 10px

  }

js:let picmax = 9//限制上传数量

function imgChange() {

let file = document.getElementById('file').files

let imglist = document.querySelectorAll('.upload-Picitem')

let piclist = document.getElementsByClassName('upload-piclist')[0]

let filelist = file.length + imglist.length >picmax ? 9 - imglist.length : file.length + imglist.length

if (file.length + imglist.length >= 9) {

let uploadfile = document.getElementsByClassName('upload-file')[0]

uploadfile.style.display = "none"

}

for (let i = 0i <filelisti++) {

readerfile(file[i]).then(e =>{

let html = document.createElement('div')

html.className = 'upload-Picitem'

html.innerHTML = '<img src=' + e + ' alt="pic">'

piclist.appendChild(html)

})

}

}

function readerfile(file) {

return new Promise((resolve, reject) =>{

let reader = new FileReader()

reader.addEventListener("load", function() {

resolve(reader.result)

}, false)

if (file) {

reader.readAsDataURL(file)

}

})

}

//提交

function submit() {

let imglist = []

let text = document.getElementsByClassName('upload-textarea')[0].value

let piclist = document.querySelectorAll('.upload-Picitem')

for (let i = 0i <piclist.lengthi++) {

imglist.push(piclist[i].lastChild.src)

}

console.log("发布内容:", text)

console.log("图片列表:", imglist)

}

//textarea高度自适应

var autoTextarea = function(elem, extra, maxHeight) {

extra = extra || 0

var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,

isOpera = !!window.opera &&!!window.opera.toString().indexOf('Opera'),

addEvent = function(type, callback) {

elem.addEventListener ?

elem.addEventListener(type, callback, false) :

elem.attachEvent('on' + type, callback)

},

getStyle = elem.currentStyle ? function(name) {

var val = elem.currentStyle[name]

if (name === 'height' &&val.search(/px/i) !== 1) {

var rect = elem.getBoundingClientRect()

return rect.bottom - rect.top -

parseFloat(getStyle('paddingTop')) -

parseFloat(getStyle('paddingBottom')) + 'px'

}

return val

} : function(name) {

return getComputedStyle(elem, null)[name]

},

minHeight = parseFloat(getStyle('height'))

elem.style.resize = 'none'

var change = function() {

var scrollTop, height,

padding = 0,

style = elem.style

if (elem._length === elem.value.length) return

elem._length = elem.value.length

if (!isFirefox &&!isOpera) {

padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'))

}

scrollTop = document.body.scrollTop || document.documentElement.scrollTop

elem.style.height = minHeight + 'px'

if (elem.scrollHeight >minHeight) {

if (maxHeight &&elem.scrollHeight >maxHeight) {

height = maxHeight - padding

style.overflowY = 'auto'

} else {

height = elem.scrollHeight - padding

style.overflowY = 'hidden'

}

style.height = height + extra + 'px'

scrollTop += parseInt(style.height) - elem.currHeight

document.body.scrollTop = scrollTop

document.documentElement.scrollTop = scrollTop

elem.currHeight = parseInt(style.height)

}

}

// addEvent('propertychange', change)

// addEvent('input', change)

// addEvent('focus', change)

change()

}

pic:z_add.png

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

我用做上传图片时,怎样限制上传图片的尺寸?就是在图片上传之前,用javascript报错?

解析:

<script>

var img=null

var xianzhiheight=60限制尺寸的高度

var xianzhiwidth=80限制尺寸的宽度

function yanzheng()

{

if(img)img.removeNode(true)

img=document.createElement("img")

img.style.position="absolute"

img.style.visibility="hidden"

document.body.insertAdjacentElement("beforeend",img)

img.src=form1.file.value

if (img.offsetHeight>xianzhiheight)

{

alert("您选择的图片超过了上传限制的最大高度:"+xianzhiheight)

document.form1.file.outerHTML=document.form1.file.outerHTML.replace(/value=\w/g,'')

return false

}

if (img.offsetWidth>xianzhiwidth){

alert("您选择的图片超过了上传限制的最大宽度:"+xianzhiwidth)

document.form1.file.outerHTML=document.form1.file.outerHTML.replace(/value=\w/g,'')

return false

}

}

</script>

<form id="form1" name=form1 method="post" action="">

<input type=file Name="file" id="file" value="默认值" onchange="yanzheng()">

<input type=submit name=Submit value="提交" />

</form>