乐鱼app成为大巴黎赞助商

乐鱼app成为大巴黎赞助商举行“同心喜迎二十大 传承中华优秀传统文化”中国古代文化常识竞赛             2023年七年级招生简章             凝望经典赏别样人生 创新表达树文化自信——河池市乐鱼app成为大巴黎赞助商高一年级举行课本剧展演活动             守护青春,护航成长 ——宜州区一中举行法制教育报告会             以赛促教展师风 凝心聚力踏征程 ——乐鱼app成为大巴黎赞助商开展教师教学技能大赛             辩以明思,坐而论道 ——记宜州区一中2024届高二辩论赛             巧借他山石,精雕“三新”玉 ——乐鱼app成为大巴黎赞助商教师赴湖南考察学习交流活动             2023年春季学期“世界地球日”知识讲座成功举办             乐鱼app成为大巴黎赞助商开展防溺水教育活动 全力筑牢生命安全防线             法治教育进校园 护航青春助成长            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

乐鱼app成为大巴黎赞助商:第8天 二进制文件上传—其它实现方式

doramart 2023-06-02 22:40:17 技术文档226112
今天开发的post.js插件,只是一种实现方式,下面介绍其他两种实现方式。

乐鱼app成为大巴黎赞助商:其他实现方式

今天开发的post.js插件,只是一种实现方式,下面介绍其他两种实现方式。

方式一

可以先把整个上传的body信息,保存到一个临时文件中,可以通过流的pipe方法做到。下面是演示代码:

// 创建一个写入流
var wstream = fs.createWriteStream("tmp");
// 通过管道方式写入
req.pipe(wstream);

这样就可以把上传来的数据保存到临时文件tmp中,当然具体实现还有很多注意事项,这只是个演示代码。然后,可以通过fs.read方式,循环读取tmp文件,并对其进行分析。部分代码如下:

fs.open("tmp",function(err,"r",fd){
   fs.read(fd ... , function(err, bytesRead, buffe){
          // 分析二进制数据
   }); 
})
这里的fs.open可以打开一个文件,并对其进行读。讨,并不会都加载到内存中,所以节省内存使用量。fs.read方法是实际读取文件的方法,这种方式对服务器端的压力相对很。酝萍稣庵址绞。
方式二

上传的数据要是比较大,就会多次调用req.on("data",function(chunk){}),那就可以每次对chunk数据进行分析,而不必都加载后再处理,处理完这个chunk后,再进行下一个chunk,以此类推。不过需要用到 req.pause() 方法暂停读取客户端上传来的数据,然后处理完这个chunk后,再调用req.resume()继续接收客户端的数据流。这个方式比第一个方式还要更好些。


还有很多实现方式,需要你去挖掘。代码的优化也是无止境的,这种动态美让编程充满了乐趣和期待。今天的开发就到这里,留一个作业,独立开发一个上传插件,采用方式1和2都可以。 争取在一周内完成开发,完成后加载到stuwebfk框架内。比如书上的是post.js插件,你可以自己取个名字,比如mypost.js,然后在index.js中用 exports.mypost = require("./lib/mypost") 加载上,可以通过下面的代码使用:

app.use(fk.mypost);

要对自己有信心,实现过程中肯定会遇到问题,多思考一定会有答案,这是个成长的烦恼,才会有成功的喜悦!明天见。

文章评论

取消回复
登录 参与评论

评论列表(

乐鱼app成为大巴黎赞助商