Angular2服务器端侦听器,用于文件上传

克里斯蒂安·穆斯卡卢(Cristian Muscalu)

在Angular2 CLI项目中,我最终实现了Vaadin的上传按钮。按钮UI可以工作,但是我不知道如何实际使它在任何地方上载文件

我一直在寻找有关侦听文件上传,multer节点服务器的Express服务器的解决方案我真的不知道如何编写这样的服务器,在哪里放置它,如何启动它,如何访问它,等等。认为像文件上传这样琐碎的事情应该更容易实现,但事实并非如此。

有什么简单的解决方案可以使Angular2沿按钮实际上传到某个地方,以便以后可以下载?

克里斯蒂安·穆斯卡卢(Cristian Muscalu)

ng2-uploader存储库中找到了解决方案,并适合与Vaadin Upload一起使用

component.html

    <div *ngIf="newName.valid">
            <vaadin-upload 
                    target="http://localhost:10050/upload"
            </vaadin-upload>
    </div>

server.js

'use strict';

const Hapi        = require('hapi');
const Inert       = require('inert');
const Md5         = require('md5');
const Multiparty  = require('multiparty');
const fs          = require('fs');
const path        = require('path');
const server      = new Hapi.Server();

server.connection({ port: 10050, routes: { cors: true } });
server.register(Inert, (err) => {});

const upload = {
  payload: {
    maxBytes: 209715200,
    output: 'stream',
    parse: false
  },
  handler: (request, reply) => {
    const form = new Multiparty.Form();
    form.parse(request.payload, (err, fields, files) => {
      if (err) {
        return reply({status: false, msg: err});
      }

      let responseData = [];

      files.file.forEach((file) => {
        let fileData = fs.readFileSync(file.path);

        const originalName = file.originalFilename;

        const generatedName = Md5(new Date().toString() + 
          originalName) + path.extname(originalName);

        const filePath = path.resolve(__dirname, 'uploads', 
          originalName);

        fs.writeFileSync(filePath, fileData);
        const data = {
          originalName: originalName,
          generatedName: generatedName
        };

        responseData.push(data);
      });

      reply({status: true, data: responseData});
    });
  }
};

const uploads = {
  handler: {
    directory: {
      path: path.resolve(__dirname, 'uploads')
    }
  }
};

server.route([
  { method: 'POST', path: '/upload',          config: upload  },
  { method: 'GET',  path: '/uploads/{path*}', config: uploads }
]);

server.start(() => {
  console.log('Upload server running at', server.info.uri);
});

对于那些需要在启动时运行server.js的人来说,这是一个很棒的解决方案,它已经过测试并且可以正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Apache Mina SFTP服务器端通道侦听器,用于接收文件

来自分类Dev

Apache Mina SFTP服务器端通道侦听器,用于接收文件

来自分类Dev

具有负载平衡功能的服务器端Firebase侦听器

来自分类Dev

如何为Firebase实现Node.Js服务器端事件侦听器?

来自分类Dev

Angular2 为什么数据没有在服务器端绑定

来自分类Dev

服务器端文件验证

来自分类Dev

Angular 2 Universal-服务器端渲染

来自分类Dev

如何使用Angular 2服务器端渲染

来自分类Dev

Angular 2(Beta)服务器端验证消息

来自分类Dev

使用 angular 等框架时服务器上服务器端脚本的文件结构

来自分类Dev

angular2 + web.api2:从服务器端(不是asp.net核心)注入防伪令牌

来自分类Dev

上传youtube视频服务器端

来自分类Dev

上传youtube视频服务器端

来自分类Dev

是否可以在php服务器端恢复文件上传?如果是,怎么办?

来自分类Dev

使用ajax上传文件并在Java Servlet服务器端进行处理

来自分类Dev

使用Ajax上传文件-服务器端未收到任何内容

来自分类Dev

NodeJS-服务器端文件上传处理程序

来自分类Dev

Angularjs 表单数据在文件上传期间未在服务器端绑定

来自分类Dev

JavaFX用于服务器端图像生成

来自分类Dev

用于Gradebook系统的服务器端编程语言

来自分类Dev

columnFilter插件不适用于Angular DataTables服务器端处理

来自分类Dev

结合使用Meteor和Angular2 / Typescript,如何基于客户端事件从服务器端代码调用外部Web服务?

来自分类Dev

如何防止从服务器端上传大文件

来自分类Dev

Struts 2注释,用于对象,Arraylist,Arrays的服务器端验证

来自分类Dev

Angular2:取消订阅主机侦听器

来自分类Dev

从服务器端文件馈送FileReader

来自分类Dev

服务器端无法捕获附加formdata文件

来自分类Dev

从JavaScript检查服务器端文件的存在

来自分类Dev

在Meteor中创建服务器端文件

Related 相关文章

  1. 1

    Apache Mina SFTP服务器端通道侦听器,用于接收文件

  2. 2

    Apache Mina SFTP服务器端通道侦听器,用于接收文件

  3. 3

    具有负载平衡功能的服务器端Firebase侦听器

  4. 4

    如何为Firebase实现Node.Js服务器端事件侦听器?

  5. 5

    Angular2 为什么数据没有在服务器端绑定

  6. 6

    服务器端文件验证

  7. 7

    Angular 2 Universal-服务器端渲染

  8. 8

    如何使用Angular 2服务器端渲染

  9. 9

    Angular 2(Beta)服务器端验证消息

  10. 10

    使用 angular 等框架时服务器上服务器端脚本的文件结构

  11. 11

    angular2 + web.api2:从服务器端(不是asp.net核心)注入防伪令牌

  12. 12

    上传youtube视频服务器端

  13. 13

    上传youtube视频服务器端

  14. 14

    是否可以在php服务器端恢复文件上传?如果是,怎么办?

  15. 15

    使用ajax上传文件并在Java Servlet服务器端进行处理

  16. 16

    使用Ajax上传文件-服务器端未收到任何内容

  17. 17

    NodeJS-服务器端文件上传处理程序

  18. 18

    Angularjs 表单数据在文件上传期间未在服务器端绑定

  19. 19

    JavaFX用于服务器端图像生成

  20. 20

    用于Gradebook系统的服务器端编程语言

  21. 21

    columnFilter插件不适用于Angular DataTables服务器端处理

  22. 22

    结合使用Meteor和Angular2 / Typescript,如何基于客户端事件从服务器端代码调用外部Web服务?

  23. 23

    如何防止从服务器端上传大文件

  24. 24

    Struts 2注释,用于对象,Arraylist,Arrays的服务器端验证

  25. 25

    Angular2:取消订阅主机侦听器

  26. 26

    从服务器端文件馈送FileReader

  27. 27

    服务器端无法捕获附加formdata文件

  28. 28

    从JavaScript检查服务器端文件的存在

  29. 29

    在Meteor中创建服务器端文件

热门标签

归档