在前端开发中,使用JavaScript实现文件上传功能通常涉及到HTML的<input>
元素与JavaScript的事件处理。选择ZIP文件上传是指允许用户通过网页界面选择一个ZIP格式的文件,并将其上传到服务器。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ZIP文件上传</title>
</head>
<body>
<input type="file" id="fileInput" accept=".zip" />
<button id="uploadButton">上传</button>
<script src="upload.js"></script>
</body>
</html>
document.getElementById('uploadButton').addEventListener('click', function() {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
if (!file) {
alert('请选择一个ZIP文件');
return;
}
if (file.type !== 'application/zip') {
alert('请选择一个有效的ZIP文件');
return;
}
const formData = new FormData();
formData.append('file', file);
fetch('/upload', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('上传成功:', data);
alert('文件上传成功');
})
.catch(error => {
console.error('上传失败:', error);
alert('文件上传失败');
});
});
服务器端需要处理文件上传请求,保存文件并进行相应的处理(如解压)。以下是一个简单的Node.js示例:
const express = require('express');
const multer = require('multer');
const fs = require('fs');
const path = require('path');
const unzipper = require('unzipper');
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
const file = req.file;
const filePath = path.join(__dirname, file.path);
fs.createReadStream(filePath)
.pipe(unzipper.Extract({ path: 'unzipped/' }))
.on('close', () => {
res.json({ message: '文件上传并解压成功' });
})
.on('error', (err) => {
res.status(500).json({ message: '文件解压失败', error: err });
});
});
app.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
通过以上步骤和代码示例,你可以实现一个基本的ZIP文件上传功能。根据具体需求,可以进一步优化和扩展功能。
领取专属 10元无门槛券
手把手带您无忧上云