当前位置: 首页 > news >正文

怎样注册个人网站上海紫博蓝网站

怎样注册个人网站,上海紫博蓝网站,网络营销的6大特点,seo人才招聘前言#xff1a;上一篇文章讲了如何进行文件的分片#xff1a;Vue3使用多线程处理文件分片任务#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…前言上一篇文章讲了如何进行文件的分片Vue3使用多线程处理文件分片任务那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. path5. cors6. body-parser总结 三、示例代码 一、文件结构 chunks文件分片存储node_modules依赖uploads合并后的文件存储目录index.js程序主文件 二、主要依赖 1. express const express require(express);作用express 是一个流行的 Node.js Web 框架它提供了一组简单的工具和功能用于构建 Web 服务器和处理 HTTP 请求。它简化了路由、请求和响应的处理使开发者能够更快速地构建 Web 应用。用法通过 express() 创建应用实例并处理路由、请求、响应等。下载 npm i express -S2. multer const multer require(multer); const upload multer({ dest: uploads/ });作用multer 是一个 Node.js 中间件专门用于处理 multipart/form-data 类型的表单数据尤其是文件上传。它可以将上传的文件保存到磁盘、内存或自定义位置。用法multer 配置了存储路径 dest: uploads/表示将上传的文件临时保存在 uploads/ 目录下。通过 upload.single(file) 或 upload.array(files) 可以处理单个文件或多个文件的上传。下载 npm i multer -S3. fs (文件系统模块) const fs require(fs);作用fs 是 Node.js 内置的文件系统模块提供了用于文件和目录操作的 API。它允许你读取文件、写入文件、删除文件、列出目录等。用法fs 允许对本地文件系统执行同步和异步操作常用于文件上传、存储、读取等操作。 4. path const path require(path);作用path 是 Node.js 内置模块提供了一些用于处理文件和目录路径的实用工具函数。它使得路径的操作变得更加简单且跨平台。用法常见的用法包括拼接路径、解析路径、获取文件扩展名等。例如path.join() 用于安全地拼接路径path.extname() 获取文件的扩展名。 5. cors const cors require(cors);作用cors 是一个中间件用于处理跨源资源共享CORS请求。CORS 是一种机制允许在不同域之间进行资源共享。cors 中间件允许你设置哪些源域可以访问服务器的资源。用法通过 app.use(cors()) 启用跨域请求支持允许所有域访问该服务器。你也可以通过 cors({origin: http://example.com}) 配置只允许指定的源访问。下载 npm i cors -S6. body-parser const Parser require(body-parser);作用body-parser 是 Express 中间件的一个旧版库用于解析请求的 body 部分。它支持将请求体解析为 JSON、URL 编码格式等并将解析后的数据附加到 req.body 上。用法可以使用 Parser.json() 和 Parser.urlencoded() 来分别解析 JSON 数据和 URL 编码的数据。 Parser.json()用于解析 application/json 类型的请求体将其解析为 JavaScript 对象。Parser.urlencoded({ extended: true })用于解析 URL 编码的表单数据extended 选项为 true 时支持更复杂的对象和数组解析。Parser.json({limit:5gb})限制请求体的大小为 5GB。 下载 npm i body-parser -S总结 express用来创建 Web 服务器和路由。multer用来处理文件上传。fs用于操作文件系统如读取、写入文件。path提供路径操作的工具跨平台支持。cors用于处理跨域请求允许不同域访问资源。body-parser解析 HTTP 请求体JSON 或 URL 编码数据并将其附加到 req.body 中。 三、示例代码 关于如何使用在 Vue3使用多线程处理文件分片任务 中有介绍到感兴趣的可以去看看。 const express require(express); const multer require(multer); const fs require(fs); const path require(path); const cors require(cors) const Parser require(body-parser);// 创建 express 应用 const app express(); const upload multer({ dest: uploads/ }); // parse application/x-www-form-urlencoded app.use(Parser.json({limit:5gb})); app.use(Parser.urlencoded({limit:5gb,extended:true})); // parse application/json app.use(Parser.json()); app.use(cors())// 接收分片 app.post(/upload-chunk, upload.single(file), (req, res) {const { chunkIndex, hash, fileName } req.body; // 分片索引、哈希值、文件名const chunk req.file; // 上传的分片文件const chunkDir path.join(__dirname, chunks, fileName); // 存储分片的目录if (!fs.existsSync(chunkDir)) fs.mkdirSync(chunkDir, { recursive: true }); //文件夹不存在则进行创建// chunkDir 命名时候需要注意尽量进行标识以防文件名冲突const chunkPath path.join(chunkDir, ${chunkIndex}-${hash}); // 分片文件名加哈希fs.rename(chunk.path, chunkPath, (err) {if (err) {console.error(存储分片失败:, err);return res.json({code:500, msg: 存储失败请重新上传 });}res.json({ code:200, msg: ${chunkIndex} 上传成功 });}); }); // 合并文件 app.post(/merge-chunks, async (req, res) {const { fileName, totalChunks } req.body;const chunkDir path.join(__dirname, chunks, fileName);const targetPath path.join(__dirname, uploads, fileName); // 最终文件存储路径try {// 确保目标文件不存在if (fs.existsSync(targetPath)) {fs.unlinkSync(targetPath);}const writeStream fs.createWriteStream(targetPath);for (let i 0; i totalChunks; i) {const chunkFiles fs.readdirSync(chunkDir).filter((file) file.startsWith(${i}-));if (chunkFiles.length 0) {res.json({code:500, msg: 上传失败请重新上传 });throw new Error(分片缺失: ${i});}// 读取分片内容const chunkPath path.join(chunkDir, chunkFiles[0]);const data fs.readFileSync(chunkPath);writeStream.write(data);// 删除已合并分片fs.unlinkSync(chunkPath);}writeStream.end();// 删除分片目录fs.rmdirSync(chunkDir);res.json({ code:200, msg: 文件上传成功, path: /uploads/ fileName });} catch (err) {console.error(合并文件失败:, err);res.json({code:500, msg: 文件合并失败 });} });// 启动服务器 const PORT 3000; app.listen(PORT, 0.0.0.0, () {console.log(Server started on http://localhost:${PORT}); })
http://www.w-s-a.com/news/633532/

相关文章:

  • 类qq留言网站建设企业做网站公司
  • 如何查到网站建设三足鼎立小程序开发公司
  • 交互网站怎么做的wordpress ssl 错位
  • 公司宣传 如何做公司网站郑州做网站那
  • 衡阳市城乡建设协会官方网站免费游戏网站模板
  • 小程序怎么做优惠券网站合肥建站网站平台
  • 民制作网站价格株洲企业seo优化
  • 网站建设 岗位职责网站建设百度索引
  • 网站建设的内容下拉网站导航用ps怎么做
  • 怎样做p2p网站海口免费自助建站模板
  • 给企业建设网站的流程图wordpress 添加子菜单
  • 企业网站带新闻发布功能的建站皋兰县建设局网站
  • 国内外做gif的网站wordpress数据库教程
  • 成都建站平台自己做一个网站需要多少钱
  • 景区旅游网站平台建设公司企业网站源码
  • 免费高清网站推荐喂来苏州网络科技有限公司
  • php做的大型网站有哪些备案博客域名做视频网站会怎么样
  • 去哪网站备案吗昭通网站建设
  • flash企业网站源码建筑材料采购网站
  • 网站可以换虚拟主机吗部门做网站优点
  • 如何做分类网站信息营销莱芜网页定制
  • 班级网站建设感想中国做视频网站有哪些
  • 做刷票的网站wordpress图片链接插件
  • 给客户做网站图片侵权沈阳做网站的地方
  • 网站开发步骤规划蓝天云免费空间主机
  • 网站字体规范wordpress找不到页面内容编辑
  • 静态网站建设参考文献茂名营销型网站制作公司
  • 君山区建设局网站风铃微网站怎么做
  • 购物网站销售管理合肥网络推广平台
  • 网站建设规划书txt微盘注册帐号