iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >nodejs 实现模拟form表单上传文件
  • 777
分享到

nodejs 实现模拟form表单上传文件

表单上传文件nodejs 2022-06-04 17:06:05 777人浏览 薄情痞子
摘要

以前项目里有这个方法,最近在客户那里出问题了,同事说,这个方法从来就没管用过,SO,用了一天时间把这个方法给搞出来了(觉得花费的时间长了点),分享之。 代码及测试用例: var Http = requi

以前项目里有这个方法,最近在客户那里出问题了,同事说,这个方法从来就没管用过,SO,用了一天时间把这个方法给搞出来了(觉得花费的时间长了点),分享之。

代码及测试用例:


var Http = require('http');
var path = require('path');
var fs = require('fs');

function postFile(fileKeyValue, req) {
  var boundaryKey = Math.random().toString(16);
  var enddata = 'rn----' + boundaryKey + '--';

  var files = new Array();
  for (var i = 0; i < fileKeyValue.length; i++) {
   var content = "rn----" + boundaryKey + "rn" + "Content-Type: application/octet-streamrn" + "Content-Disposition: fORM-data; name="" + fileKeyValue[i].urlKey + ""; filename="" + path.basename(fileKeyValue[i].urlValue) + ""rn" + "Content-Transfer-Encoding: binaryrnrn";
   var contentBinary = new Buffer(content, 'utf-8');//当编码为ascii时,中文会乱码。
   files.push({contentBinary: contentBinary, filePath: fileKeyValue[i].urlValue});
  }
  var contentLength = 0;
  for (var i = 0; i < files.length; i++) {
   var stat = fs.statSync(files[i].filePath);
   contentLength += files[i].contentBinary.length;
   contentLength += stat.size;
  }

  req.setHeader('Content-Type', 'multipart/form-data; boundary=--' + boundaryKey);
  req.setHeader('Content-Length', contentLength + Buffer.byteLength(enddata));

  // 将参数发出
  var fileindex = 0;
  var doOneFile = function(){
   req.write(files[fileindex].contentBinary);
   var fileStream = fs.createReadStream(files[fileindex].filePath, {bufferSize : 4 * 1024});
   fileStream.pipe(req, {end: false});
   fileStream.on('end', function() {
     fileindex++;
     if(fileindex == files.length){
      req.end(enddata);
     } else {
      doOneFile();
     }
   });
  };
  if(fileindex == files.length){
    req.end(enddata);
  } else {
    doOneFile();
  }      
}

//测试用例
//http://nodejs.org/api/http.html#http_http_request_options_callback
var files = [
 {urlKey: "file1", urlValue: "E:\DFBF.jpg"},
 {urlKey: "file2", urlValue: "E:\1.jpg"},
 {urlKey: "file3", urlValue: "E:\Pro 空格 中文.mp3"}
]
var options = { 
 host: "localhost", 
 port: "8908" , 
 method: "POST", 
 path: "/Home/Upload"
}

var req = http.request(options, function(res){
 console.log("RES:" + res);
 console.log('STATUS: ' + res.statusCode);
 console.log('HEADERS: ' + JSON.stringify(res.headers));
 //res.setEncoding("utf8");
 res.on("data", function(chunk){
  console.log("BODY:" + chunk);
 })
})

req.on('error', function(e){
 console.log('problem with request:' + e.message);
 console.log(e);
})
postFile(files, req);
console.log("done");

服务端测试,用mvc在home控制器写了个upload方法,并遍历上传的文件将其保存在硬盘上了。

只是上传大文件会有问题,估计是需要服务器进行配置,暂且不管。

服务端方法(写在了Home控制器下)


[HttpPost]
    public string Upload()
    {
      //HttpPostedFileBase file = this.Request.Files["file"];

      //file.SaveAs(file.FileName);

      foreach (string file in this.Request.Files)
      {
        this.Request.Files[file].SaveAs(@"E:新建文件夹" + this.Request.Files[file].FileName);
      }

      return @"保存成功 路径:E:新建文件夹";
    }

运行脚本:


node nodejsPostFile.js

运行结果:

查看图片

--结束END--

本文标题: nodejs 实现模拟form表单上传文件

本文链接: https://www.lsjlt.com/news/11846.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用 Golang 实现 Form 表单文件上传?
    go 语言使用 form 表单实现文件上传包括以下步骤:在 html 中设置 enctype="multipart/form-data" 属性,创建表单。在 go 中使用 r.parse...
    99+
    2024-05-13
    文件上传 golang
  • php模拟form表单发送文件
    php模拟form表单发送文件 1、背景 今天遇到一个需求,要在php本身上面发送文件数据,文件是客户端表单提交过来的,然后我要发给另一方,另一方也是php写的,但是它接收的是表单数据的文件上传: 2...
    99+
    2023-09-10
    php 开发语言 json
  • Ajax如何实现提交Form表单及文件上传
    这篇文章主要为大家展示了“Ajax如何实现提交Form表单及文件上传”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax如何实现提交Form表单及文件上传”这...
    99+
    2024-04-02
  • Linux中如何以form表单形式上传文件
    这篇文章给大家分享的是有关Linux中如何以form表单形式上传文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先cd到要上传文件的目录下:root@iZ2zee1przeygbuu4rkwvxZ:/usr/l...
    99+
    2023-06-12
  • nodejs如何实现简单的文件上传功能
    这篇文章主要为大家展示了“nodejs如何实现简单的文件上传功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs如何实现简单的文件上传功能”这篇文章吧。首先需要大家看一下目录结构,然后...
    99+
    2023-06-29
  • jquery中Form怎么实现文件上传
    这篇文章给大家分享的是有关jquery中Form怎么实现文件上传的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。①先是html<a href="javas...
    99+
    2024-04-02
  • java form-data上传文件怎么实现
    在Java中,可以使用Apache HttpClient库来实现form-data形式的文件上传。下面是一个简单的示例代码: imp...
    99+
    2023-10-30
    java
  • javascript怎么构造可以上传文件的form表单
    这篇文章主要介绍“javascript怎么构造可以上传文件的form表单”,在日常操作中,相信很多人在javascript怎么构造可以上传文件的form表单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jav...
    99+
    2023-06-03
  • Ajax和form+iframe怎么实现文件上传
    这篇文章将为大家详细讲解有关Ajax和form+iframe怎么实现文件上传,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。HTML5Ajax上传html5的上传实现,是需要file控件以及XMLHttpR...
    99+
    2023-06-08
  • Ant Design_Form表单上传文件组件实现详解
    目录背景实现问题1:问题2:tip1:注意一下新增和修改时校验方法tip2: 注意一下beforeUpload的返回值背景 需要实现的需求:在一个表单提交中,需要提交各种组件的提交...
    99+
    2023-03-07
    Ant Design_Form表单上传文件 Ant Design_Form
  • Ant Design_Form表单上传文件组件如何实现
    本文小编为大家详细介绍“Ant Design_Form表单上传文件组件如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Ant Design_Form表单上传文件组件如何实现”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-07-05
  • nodejs 实现简单的文件上传功能(示例详解)
    首先需要大家看一下目录结构,然后开始一点开始我们的小demo。 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能。 2.通过html的fo...
    99+
    2024-04-02
  • Java发送form-data请求实现文件上传
    如何使用Java发送form-data格式的请求上传multipart文件,供大家参考,具体内容如下 封装了以下工具类: package com.leeyaonan.clinkz.c...
    99+
    2024-04-02
  • Ajax如何实现表单异步上传文件
    这篇文章主要介绍Ajax如何实现表单异步上传文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.起因做前台页面时,需要调用WebAPI的Post请求,发送一些字段和文件(相当于把表...
    99+
    2024-04-02
  • python + request实现multipart/form-data请求上传文件
    1、multipart/form-data介绍         multipart/form-data 是 HTTP 协议中用于上传文件的一种类型。它允许客户端向服务器发送文件以及一些额外的元数据(例如文件名、MIME 类型、图片等)。这种...
    99+
    2023-09-16
    python http
  • SpringBoot简单实现文件上传
    目录1.创建SpringBoot项目2.修改application.properties配置文件3.编写控制器UserController类4.编写前端页面index.html5.效...
    99+
    2024-04-02
  • javaWeb实现简单文件上传
    本文实例为大家分享了javaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下 1.先导入两个包:commons-fileupload-1.3.3.jar,commons-i...
    99+
    2024-04-02
  • 怎么用Vue+NodeJS实现大文件上传
    本文小编为大家详细介绍“怎么用Vue+NodeJS实现大文件上传”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Vue+NodeJS实现大文件上传”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。常见的文件上传...
    99+
    2023-06-30
  • SpringBoot实现单文件与多文件上传
    目录一、公共文件存储代码1.FileUploadUtils.java2.FileUtils.java3.MimeTypeUtils.java4.FileException.java5...
    99+
    2024-04-02
  • asp.net中表单上传功能如何实现ajax文件异步上传
    这篇文章主要为大家展示了“asp.net中表单上传功能如何实现ajax文件异步上传”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“asp.net中表单上传功能如何...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作