用js实现不同电脑间的文件传送
时间: 2024-05-16 11:13:02 浏览: 9
要实现不同电脑间的文件传送,可以通过以下步骤:
1. 创建一个服务器:可以使用Node.js创建一个服务器,监听指定的端口号。
2. 创建一个客户端:客户端可以使用浏览器或者Node.js创建,在客户端中实现文件上传和下载功能。
3. 实现文件上传功能:客户端可以通过input[type="file"]元素选择要上传的文件,然后使用XMLHttpRequest或者fetch API将文件上传到服务器。
4. 实现文件下载功能:客户端可以通过点击链接或者按钮触发文件下载,然后使用XMLHttpRequest或者fetch API从服务器下载文件。
以下是一个使用Node.js创建文件上传和下载服务器的示例代码:
```javascript
const http = require('http');
const fs = require('fs');
const path = require('path');
const formidable = require('formidable');
const PORT = 3000;
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
const form = new formidable.IncomingForm();
form.uploadDir = path.join(__dirname, 'uploads');
form.parse(req, (err, fields, files) => {
if (err) {
console.error(err);
res.statusCode = 500;
res.end('Internal Server Error');
return;
}
const oldPath = files.file.path;
const newPath = path.join(form.uploadDir, files.file.name);
fs.rename(oldPath, newPath, (err) => {
if (err) {
console.error(err);
res.statusCode = 500;
res.end('Internal Server Error');
return;
}
res.statusCode = 200;
res.end('OK');
});
});
} else if (req.method === 'GET') {
const { pathname } = new URL(req.url, `http://${req.headers.host}`);
const filePath = path.join(__dirname, pathname);
fs.readFile(filePath, (err, data) => {
if (err) {
console.error(err);
res.statusCode = 404;
res.end('File Not Found');
return;
}
res.statusCode = 200;
res.end(data);
});
} else {
res.statusCode = 405;
res.end('Method Not Allowed');
}
});
server.listen(PORT, () => {
console.log(`Server is listening on port ${PORT}`);
});
```
在这个示例中,我们使用了Node.js内置的http模块创建了一个HTTP服务器,并使用了formidable模块处理文件上传请求。在处理文件上传请求时,我们将上传的文件保存到`./uploads`目录下,并使用`fs.rename`方法重命名文件。在处理文件下载请求时,我们使用URL模块解析请求的路径,并使用`fs.readFile`方法读取文件内容并返回给客户端。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)