下面将详细讲解“基于JavaScript实现文件共享型网站”的完整攻略。
前置条件
- 熟悉HTML、CSS和JavaScript基本知识;
- 熟悉Node.js开发环境和相关模块。
操作步骤
1. 创建文件夹
首先在本地文件夹中创建一个新的文件夹,命名为“file-sharing-website”。
2. 初始化项目
打开终端,进入到该文件夹中,执行以下命令:
npm init -y
执行完毕后,会生成一个package.json
文件。
3. 安装依赖
执行以下命令,安装Express和Multer模块:
npm install express multer
4. 构建后端
在file-sharing-website
文件夹下创建一个新的index.js
文件,在其中编写以下代码:
const express = require('express')
const multer = require('multer')
const app = express()
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
const upload = multer({ storage: storage })
app.use(express.static('public'))
app.post('/upload', upload.single('file'), (req, res) => {
res.json({
file: req.file.filename
})
})
app.listen(3000, () => {
console.log('Server started on port 3000')
})
该文件代码的含义如下:
- 引入
express
和multer
模块; - 创建一个应用实例
app
; - 定义一个Multer的
storage
对象,用于设置文件存储路径和文件名; - 创建一个Multer实例
upload
; - 静态文件目录设置为
public
,确保网站能够访问静态文件; - 设置一个网站的上传路径和上传方法,上传文件类型为
file
,将上传的文件名返回。
5. 创建前端页面
在file-sharing-website
文件夹下创建一个新的public
文件夹,再在其中创建一个新的index.html
文件,在其中编写以下代码:
<!DOCTYPE html>
<html>
<head>
<title>基于JavaScript实现文件共享型网站</title>
<style>
.container {
max-width: 600px;
margin: 0 auto;
text-align: center;
}
.success {
margin-top: 20px;
color: green;
}
.file-list {
list-style: none;
margin: 20px 0;
padding: 0;
}
</style>
</head>
<body>
<div class="container">
<h1>基于JavaScript实现文件共享型网站</h1>
<form enctype="multipart/form-data">
<input type="file" name="file" id="file">
<button type="submit">上传</button>
</form>
<div class="success" style="display: none;"></div>
<ul class="file-list"></ul>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('form').submit(function(e) {
e.preventDefault();
var file = $('#file')[0].files[0];
var formData = new FormData();
formData.append('file', file);
$.ajax({
url: '/upload',
method: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(res) {
$('.success').text('文件上传成功:' + res.file).show();
listFiles();
},
error: function() {
$('.success').text('文件上传失败').show();
}
});
});
function listFiles() {
$.ajax({
url: '/files',
success: function(files) {
var fileList = $('.file-list');
fileList.empty();
for (var i = 0; i < files.length; i++) {
var file = files[i];
fileList.append('<li><a href="/uploads/' + file + '">' + file + '</a></li>');
}
}
})
}
listFiles();
});
</script>
</body>
</html>
该文件代码的含义如下:
- 构建文档结构和基本样式;
- 创建一个表单用于文件上传;
- 通过Ajax提交表单;
- 定义一个函数用于列出所有已上传文件列表。
6. 运行项目
在终端中执行以下命令,启动应用:
node index.js
最后,在浏览器中访问http://localhost:3000/,即可看到上传页面。选择文件并点击上传按钮,上传成功后,会在页面显示上传文件的文件名。再次刷新页面,会看到之前上传的文件已列出。
示例1:上传图片文件
步骤1:将一张名为“example.png”的图片,存放在“file-sharing-website”文件夹下的“public/uploads”文件夹中。
步骤2:在浏览器中访问http://localhost:3000/,将“example.png”文件上传。
步骤3:上传成功后,再次访问http://localhost:3000/,会看到“example.png”文件已列出。
示例2:上传文本文件
步骤1:创建一个名为“example.txt”的文本文件,存放在“file-sharing-website”文件夹下的“public/uploads”文件夹中。
步骤2:在浏览器中访问http://localhost:3000/,将“example.txt”文件上传。
步骤3:上传成功后,再次访问http://localhost:3000/,会看到“example.txt”文件已列出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于JavaScript实现文件共享型网站 - Python技术站