作业1:实现文件上传到服务器中 作业2:实现用户登录操作【其中有User类,登录操作通过发送一个对象来实现登录校验】 【服务器中存在多个用户数据 { id:1,name:zhang,password:123456}, { id:2,name:lisi,password:1234}, { id:3,name:adminpassword:123}】
时间: 2024-03-10 08:51:20 浏览: 20
作业1:实现文件上传到服务器中
上传文件到服务器可以采用以下步骤:
1. 在前端页面中,通过表单选择需要上传的文件,并将文件转换成二进制数据。
2. 将二进制数据通过 AJAX 或其他方式发送给服务器端,同时携带文件的元数据,例如文件名、大小、类型等信息。
3. 在服务器端,接收到文件数据后,将其存储到服务器的指定位置。
以下是一个简单的 Node.js 服务器端代码示例:
```
const http = require('http');
const fs = require('fs');
const formidable = require('formidable');
http.createServer((req, res) => {
if (req.method.toLowerCase() === 'post') {
const form = new formidable.IncomingForm();
form.parse(req, (err, fields, files) => {
if (err) throw err;
const oldPath = files.file.path;
const newPath = __dirname + '/' + files.file.name;
fs.rename(oldPath, newPath, (err) => {
if (err) throw err;
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('File uploaded successfully.');
});
});
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form action="/" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="file"><br>');
res.write('<input type="submit">');
res.write('</form>');
res.end();
}
}).listen(8080);
```
该代码使用 Node.js 内置的 `http` 模块创建了一个 HTTP 服务器,同时使用了 `formidable` 模块来处理表单数据。当用户访问服务器时,如果是 GET 请求,服务器会返回一个包含文件上传表单的 HTML 页面;如果是 POST 请求,服务器会接收上传的文件并存储到服务器的当前目录下,并返回上传成功的信息。
作业2:实现用户登录操作
以下是一个简单的 Node.js 服务器端代码示例:
```javascript
const http = require('http');
const fs = require('fs');
// 用户数据
const users = [
{ id: 1, name: 'zhang', password: '123456' },
{ id: 2, name: 'lisi', password: '1234' },
{ id: 3, name: 'admin', password: '123' }
];
http.createServer((req, res) => {
if (req.method.toLowerCase() === 'post') {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
const user = JSON.parse(body);
const existUser = users.find(u => u.name === user.name && u.password === user.password);
if (existUser) {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ success: true, data: existUser }));
} else {
res.statusCode = 401;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ success: false, message: 'Invalid username or password.' }));
}
});
} else {
// 返回登录页面
const html = fs.readFileSync('./login.html', 'utf-8');
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(html);
}
}).listen(8080);
```
该代码使用 Node.js 内置的 `http` 模块创建了一个 HTTP 服务器,同时处理了 POST 请求。当用户提交登录表单时,服务器会接收到包含用户信息的 JSON 数据,然后在 `users` 数组中查找是否存在匹配的用户。如果存在,则返回用户信息;否则返回错误信息。如果是 GET 请求,则返回包含登录表单的 HTML 页面。注意,该代码仅为示例代码,实际应用中需要更加严格的用户验证和密码加密措施。