`
caoweiju
  • 浏览: 8617 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nodejs多个文件上传问题的解决办法

阅读更多

 

关于多个文件上传的表单有多中方法:

1)基本的表单上传

 

<form action="/fileupload" enctype="multipart/form-data">
  选择一个文件: <input type="file" name="file">
  <input type="submit">
</form>


多个文件的话enctype="multipart/form-data"这个一定要有。

 

这种情况的话点击submit按钮就会自动提交file到后台,使用nodejs来保存文件的话一般使用formidable这个模块

npm install formidable --save   安装此模块

var formidable = require('formidable');     引用此模块

我们需要在对应的后台路由或者处理fileupload的js文件方法中来使用上述模块获取上传的文件

var form = new formidable.IncomingForm();     初始化这个模块

form.keepExtensions = true;
    form.uploadDir = "./tempdir";
   form.multiples = true;
   form.maxFieldsSize = 50 * 1024 * 1024;         参数设置 可以参考文档https://github.com/felixge/node-formidable   里面设置相应参数

form.parse(request, function(err, fields, files) {           //使用这个函数来获取文件

//这里可以使用两种方法来获取文件,1、nodejs是事件驱动机制,可以使用form.on("file",function(){})来处理。文件接收到触发事件  2、对接收文件进行遍历(本文使用)

for(var k in files)
      {        //文件的重定向 存到服务器上
         fs.rename(files[k].path,"./files/"+files[k].name);      //很多文件的时候使用for in循环来进行遍历 此时 k是files对象的某个索引 或者是后面提到的FormData.append的名字

      }
         response.writeHead(200, {'Content-Type': 'text/html','Access-Control-Allow-Origin':'*','Accept-Encoding':'gzip, deflate, sdch'});
        response.end();

});   

 

2)ajax异步表单提交多个文件

<input id="addpic" name="picupload" type="file" multiple="multiple" style=""></input>

<input id="uploadpic" type="button" value=" 上 传 "></input>

只需要一个文件表单和提交按钮即可,

首先使用FormData对象来收集所有文件,

 var datapic=new FormData();
    for(var k=0;k<document.getElementById("addpic").files.length;k++)
    {
      datapic.append("myfile"+k, document.getElementById("addpic").files[k]);     //第一个参数是文件实例名,可以再后台作为files的引用来遍历所有文件  第二个是文件实例
    }

//使用JS来遍历files文件,并添加到FormData实例中,同时赋予名字"myfile"+k,

 $.ajax({url:"/ajax/uploadpic",
  data:datapic,
      type: 'POST',
          async: false,
          cache: false,
          contentType: false,    //这些参数要设置为false 
          processData: false,
          success:function(result){  

//处理函数

});

这里jquery也可以获取文件 不过要使用prop这个方法

 

  • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
  • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

 

var files=$('[name="picupload"]').prop("files")这样将返回filelist对象。可以使用files[0]或者files.length来遍历

或者下面这种:

 

var selectedFile = $('#input').get(0).files[0];
var selectedFile = $('#input')[0].files[0];

 

 

后端的操作就是和之前一样,使用formidable来进行文件的保存。

参考文章:https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Objects 

http://www.yiibai.com/nodejs/nodejs_ch1627.html

https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

https://github.com/felixge/node-formidable

分享到:
评论

相关推荐

    Vue3 + nodejs 实战 - 文件上传项目 (图片上传,多文件上传,拖拽上传,大文件分片上传,断点续传)后端源码

    这个就是Vue3 + nodejs 实战 --- 文件上传项目的前端源码(Vue3)+ 后端(Nodejs),实现的文件上传的代码,主要实现了(图片上传,多文件上传,拖拽上传,大文件分片上传,断点续传)这些功能,如果对文件上传有...

    Vue3 + nodejs 实战 - 文件上传项目 (图片上传,多文件上传,拖拽上传,大文件分片上传,断点续传)前端源码

    这个就是Vue3 + nodejs 实战 --- 文件上传项目的前端源码(Vue3)+ 后端(Nodejs),实现的文件上传的代码,主要实现了(图片上传,多文件上传,拖拽上传,大文件分片上传,断点续传)这些功能,如果对文件上传有...

    NodeJS本地上传文件至服务器

    在Node.js环境中,将本地文件上传到服务器是一个常见的任务,主要应用于文件共享、数据备份、内容发布等场景。本文将详细讲解如何使用Node.js实现这一功能。 首先,我们需要理解Node.js的基本概念。Node.js是一个...

    nodejs上传下载管理文件

    Multer可以解析文件上传请求,将文件保存到服务器,并提供文件信息。 3. **File System (FS)模块**:Node.js内置的文件系统模块,用于读取、写入、移动和删除文件。在文件上传后,我们需要使用FS模块来保存文件到...

    php和Nodejs大文件分片上传

    在现代Web开发中,大文件上传是一个常见的需求,但传统的HTTP协议一次性上传整个大文件可能会导致网络中断、服务器压力过大等问题。为了解决这些问题,"php和Nodejs大文件分片上传"技术应运而生。这个技术通过将大...

    DropIt是一个用nodejs构建的文件上传器Uploader

    DropIt是一款基于Node.js开发的文件上传工具,它旨在提供简单、高效的文件上传服务,让用户能够轻松上传文件并获取分享链接。在这个项目中,开发者利用了Node...这是一个综合性的项目,涵盖了Web开发中的多个核心技能。

    nodejs中jquryfileupload异步上传的demo

    这个库结合了jQuery的便利性和Node.js的强大处理能力,为用户提供了一个高效的文件上传解决方案。在这个“nodejs中jquryfileupload异步上传的demo”中,我们将深入探讨如何设置和使用这个组件。 首先,jQuery File ...

    NodeJS使用formidable实现文件上传

    总的来说,`formidable`库为Node.js提供了方便的文件上传解决方案,通过它可以轻松地处理HTTP请求中的multipart/form-data数据,从而实现文件上传功能。结合Express框架和适当的路由处理,你可以构建出完整的文件...

    nodejs multer实现文件上传与下载

    - 使用upload.array('name', maxCount)来处理多个文件上传,其中maxCount是指定上传文件的最大数量。 - 当文件上传成功后,可以通过req.file对象获取到文件信息,例如原文件名、文件大小等。 - 文件上传到服务器...

    一个简单的node文件上传程序

    程序通常会监听`POST`请求,因为文件上传通常发生在表单提交时,而表单默认使用`POST`方法。服务器端代码会解析请求体,获取上传的文件数据。在Node.js中,可以使用`multer`这样的第三方中间件来处理`multipart/form...

    一个基于NodeJs 利用webpack项目构建工具的 单页面与多页面混合的后台管理系统.zip

    功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可...

    nodejs基于express实现文件上传的方法

    本文实例讲述了nodejs基于express实现文件上传的方法。分享给大家供大家参考,具体如下: 前段时间在做个人项目的时候,用到了nodejs服务端上传文件,现在回头把这个小结一下,作为记录。 本人上传文件时是基于...

    Nodejs实现文件上传的示例代码

    对于多个文件上传,可以使用`upload.array()`,同样需要提供字段名: ```javascript app.post('/upload/multer', upload.array('multerFile'), (req, res) =&gt; { console.log(req.files); let fileList = []; req...

    NodeJS使用七牛云存储上传文件的方法

    2. formidable模块:用于解析NodeJS中POST请求上传的文件,这个模块支持文件上传、多部分解析等。 3. express模块:是一个轻量级的NodeJS Web应用框架,用于创建服务器端的应用程序和API接口。 安装这些模块的命令...

    nodejs:文件上传

    在IT行业中,Node.js是一个...综上所述,Node.js中的文件上传涉及多个方面,包括中间件的选择、文件流处理、错误处理以及前端表单设计。正确实现文件上传功能,不仅可以提升用户体验,还能保证系统的安全性和稳定性。

    使用nodejs+express实现简单的文件上传功能

    在Express应用中编写对应的路由逻辑,使用multer的.single('fileUpload')来处理单个文件上传,使用.array('fileUpload')来处理多个文件上传。接收文件之后,将文件保存到指定的目录。 6. 文件保存 编写代码逻辑,...

    Node.js-基于nodejsexpressmongodbmulter实现的文件上传存储分页管理功能

    这个例子只是展示了基本的文件上传和分页管理流程,对于生产环境,还需要进行更多的安全性和稳定性的考量。希望这个概述能帮助你理解如何使用Node.js、Express、MongoDB和Multer构建文件管理系统。

    fileup.js基于nodejs和http和rfc1867的文件上传下载代码

    * @Description : 结论:理论上用一个不依赖外部模块的纯nodejs文件在局域网中实现了任意文件通过浏览器的上传、下载、查看,需要一台电脑安装和运行nodejs;&lt;/div&gt;&lt;br/&gt; * 用法:在http://nodejs.cn/ 下载nodejs...

    NodeJs实现简易WEB上传下载服务器

    项目上的需求是集群均可生成PDF文件或是访问PDF文件,但是没有文件服务器,故做一个简易的文件服务器。 解决方案:集群内的机器(客户端)生成PDF文件之后将PDF文件推给文件服务器,我们暂且称它为服务端;如果某个...

    nodejs+mongodb实现简单的上传文件页面

    在本项目中,我们主要探讨如何使用Node.js和MongoDB构建一个简单的文件上传页面。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript得以在服务器端执行,而MongoDB则是一个流行的NoSQL数据库,...

Global site tag (gtag.js) - Google Analytics