- input
|
[accept](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#accept) | 一个或多个 unique file type specifiers 描述允许的文件类型/文件格式 |
| :—- | :—- |
| [capture](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#capture) | 捕获图像或视频数据的源 |
| [files](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#files) | FileList 列出了已选择的文件 |
| [multiple](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#multiple) | 布尔值,如果出现,则表示用户可以选择多个文件 |
FormData
var formData = new FormData();var photos = document.querySelector("input[type='file'][multiple]");formData.append('title', 'My Vegas Vacation');// formData 只接受文件、Blob 或字符串,不能直接传递数组,所以必须循环嵌入for (let i = 0; i < photos.files.length; i++) { formData.append('photo', photos.files[i]); }fetch('https://example.com/posts', { method: 'POST', body: formData}).then(response => response.json()).then(response => console.log('Success:', JSON.stringify(response))).catch(error => console.error('Error:', error));
Base64上传
<a name="EbJUW"></a>## 大文件上传1. 大文件切片(6-7)(HTTP可以多个并发传递) file.prototype.slice1. 同时发送5个切片请求1. 合并请求文件格式```javascript//Firefox1.chunk:文件切片filename:切片名字 hash-number .png/jpg//node2. upload//merge3. 请求合并
将size分割
function Tailoring(files) {
let size = files.size / 5
let i = 0
let j = []
let k = 0
while (i < 5) {
j.push({ check: files.slice(k, k + size), name: files.name + '-' + i })
k = k + size
i++
}
return j
}
//发送图片上传
let file = () => {
let files = document.querySelector('input').files[0]
let k = Tailoring(files) [size1,size2...]
// console.log(k)
let f = k.map(item => {
let formdata = new FormData()
formdata.append("img",item.check)
return fetch('http://localhost:3000/api', {
method: 'POST',
body: formdata
})
.then(res=>res.json())
})
//等待所以图片上传告诉服务端拼接图片
let as = Promise.all(f)
as.then(r=>{
//通过r判断是否完整上传
let ary = r.map(item=>item.name)
//console.log(ary)
//告知服务端拼接图片
fetch(`http://localhost:3000/mesage/${ary}`)
.then(res=>console.log(res))
} )
}
//服务端拼接
let data = req.params.id.split(',')
//获取每一个需要拼接的名称
let ws=fs.createWriteStream('./{名称}.jpeg');
//流
data.map(item=>{
let imgs = fs.readFileSync(`./uploads/${item}`)
ws.write(imgs)
})
ws.end()