JavaScript图片、文件夹上传到后台是什么类型

50 阅读2分钟

JavaScript图片、文件夹上传到后台是什么类型

在 JavaScript 中,图片和文件夹上传到后台时,通常使用 multipart/form-data 格式。这种格式允许将文件和其他表单数据一起上传。以下是详细说明:

1. 文件上传的类型

  • multipart/form-data

    • 用于上传文件和其他表单数据。

    • 通过 <form> 表单或 FormData 对象实现。

  • application/json

    • 通常用于上传文本数据,不适合直接上传文件。

2. 使用 <form> 表单上传

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file" multiple>
  <button type="submit">Upload</button>
</form>
  • 说明

    • enctype="multipart/form-data":指定表单数据编码类型。

    • multiple:允许选择多个文件。

3. 使用 FormData 对象上传

const fileInput = document.querySelector('input[type="file"]');
const formData = new FormData();

fileInput.addEventListener('change', function() {
  for (const file of fileInput.files) {
    formData.append('files', file); // 添加文件到 FormData
  }

  fetch('/upload', {
    method: 'POST',
    body: formData
  })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));
});
  • 说明

    • FormData:用于构建表单数据,支持文件上传。

    • append:将文件添加到 FormData 中。

4. 文件夹上传

<input type="file" name="files" webkitdirectory multiple>
  • 说明

    • webkitdirectory:允许选择文件夹(仅支持部分浏览器)。

    • multiple:允许选择多个文件夹。

5. 后台处理

  • Node.js(使用 multer 中间件)
const express = require('express');
const multer = require('multer');
const app = express();

const upload = multer({ dest: 'uploads/' });

app.post('/upload', upload.array('files'), (req, res) => {
  console.log(req.files); // 上传的文件信息
  res.json({ message: 'Upload successful' });
});

app.listen(3000, () => console.log('Server running on port 3000'));
  • 说明

    • multer:用于处理 multipart/form-data 格式的文件上传。

    • upload.array('files'):处理多个文件上传。

总结

类型描述适用场景
multipart/form-data用于上传文件和表单数据文件上传、文件夹上传
FormData用于构建表单数据,支持文件上传通过 JavaScript 动态上传文件
multerNode.js 中间件,处理文件上传后台接收和处理文件

通过 multipart/form-data 格式和 FormData 对象,可以方便地实现文件和文件夹的上传功能。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github