一生一世学坛

 找回密码
 立即注册
搜索
查看: 3997|回复: 0
打印 上一主题 下一主题

nodejs创建文件服务post方法上传文件数据到创建的服务

[复制链接]

334

主题

385

帖子

6830

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6830
跳转到指定楼层
楼主
发表于 2021-4-11 15:42:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
建立文件服务:
  1. var http=require("http");

  2. var fs=require("fs");


  3. http.createServer(function(req,res){
  4.         res.writeHead(200,{"Content-type":"text/html;charset=UTF-8","Access-Control-Allow-Origin":"*"});
  5.         if (req.method.toLowerCase()=="post") {
  6.                 //新建一个空数组接受流的信息
  7.                 var chunks=[];
  8.                 //获取长度
  9.                 let num=0;
  10.                
  11.                 req.on("data",function(chunk){
  12.                         chunks.push(chunk);
  13.                         num+=chunk.length;
  14.                 });
  15.                 req.on("end",function(){
  16.                         //最终流的内容本体
  17.                         var buffer=Buffer.concat(chunks,num);
  18.                         //新建数组接收出去\r\n的数据下标
  19.                         let rems=[];
  20.                         //根据\r\n分离数据和报头
  21.                         for (var i = 0; i < buffer.length; i++) {
  22.                                 let v=buffer[i];
  23.                                 let v2=buffer[i+1];
  24.                         // 10代表\n 13代表\r
  25.                         if (v==13&&v2==10) {
  26.                                 rems.push(i)
  27.                         }
  28.                 }//for
  29.                 //获取上传图片信息
  30.                 let picmsg_1 = buffer.slice(rems[0]+2,rems[1]).toString();
  31.                 console.log(picmsg_1);
  32.                 let filename = picmsg_1.match(/filename=".*"/g)[0].split('"')[1];
  33.                 console.log(filename);

  34.                  //图片数据
  35.                  var nbuf = buffer.slice(rems[3]+2,rems[rems.length-2]);
  36.                  let address="./"+filename;
  37.                  //创建空文件并写入内容
  38.                  fs.writeFile(address,nbuf,function(err){
  39.                          if (err) {
  40.                                  console.log(err);
  41.                            res.writeHeader(200,{
  42.                   'content-type' : 'text/html;charset="utf-8"'
  43.                 });
  44.                res.write("file:"+err);
  45.                        res.end();
  46.                          }else{
  47.                                  console.log("创建成功")
  48.                                                            res.writeHeader(200,{
  49.                   'content-type' : 'text/html;charset="utf-8"'
  50.                 });
  51.                res.write("创建成功 file:"+address);
  52.                        res.end();
  53.                          }
  54.                  })

  55.                 })       
  56.                
  57.                
  58.         }
  59. }).listen(3000,"localhost")
复制代码
建立一个测试页面:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.         <meta charset="UTF-8">
  5.         <title>Document</title>
  6. </head>
  7. <body>
  8.         <form action="http://localhost:3000/" method="POST" enctype="multipart/form-data">
  9.                 <input type="file" name="file"><br/>
  10.                 <input type="submit" value="上传"/>
  11.         </form>
  12. </body>
  13. </html>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|分享学习  

GMT+8, 2024-5-17 13:43 , Processed in 0.063625 second(s), 6 queries , File On.

声明:本站严禁任何人以任何形式发表违法言论!

本站内容由网友原创或转载,如果侵犯了您的合法权益,请及时联系处理!© 2017 zamxqun@163.com

皖公网安备 34010402700634号

皖ICP备17017002号-1

快速回复 返回顶部 返回列表