Formdata文件上传
注意后台并不会将所有业务的参数处理使用formdata的方式来进行,只有在有文件数据的时候,才会处理formdata数据,意味着,之前所使用的普通接口不要传递formdata数据.
CSS代码
<style>
.thumb-box {
text-align: center;
margin-top: 50px;
}
.thumb {
width: 250px;
height: 250px;
object-fit: cover;
border-radius: 50%;
}
</style>
</head>
<body>
<div class="thumb-box">
<img src="./images/cover.jpg" class="img-thumbnail thumb" alt="" />
<div class="mt-2">
<form action="">
<input type="text" name="username" />
<input type="text" name="password" />
<input name="avatar" type="file" id="iptFile" accept="image/*" />
</form>
</div>
</div>
<script src="./lib/axios.js"></script>
利用formdata上传所表单包含内容(inpu和头像文件)
let iptFile = document.querySelector('#iptFile')
iptFile.addEventListener('change', function() {
let form = document.querySelector('form')
let fd = new FormData(form)
axios
.post('http://www.itcbc.com:3006/api/formdata', fd)
.then(result => {
console.log(result)
})
})
利用formdata只上传文件数据,input里内容不会上传
let iptFile = document.querySelector('#iptFile')
iptFile.addEventListener('change', function() {
let myfile = iptFile.files[0]
console.log(myfile)
let fd = new FormData()
fd.append('avatar', myfile)
axios
.post('http://www.itcbc.com:3006/api/formdata', fd)
.then(result => {
console.log(result)
})
})
利用formdata实现本地图片预览
let iptFile = document.querySelector('#iptFile')
let thumb = document.querySelector('.thumb')
iptFile.addEventListener('change', function () {
let myfile = iptFile.files[0]
let myurl = URL.createObjectURL(myfile)
thumb.src = myurl
let fd = new FormData()
fd.append('avatar', myfile)
axios
.post('http://www.itcbc.com:3006/api/formdata', fd)
.then(result => {
console.log(result)
})
})