从hapi到http服务器映像

时间:2017-07-23 16:35:24

标签: javascript node.js hapijs

我对后端的了解不是最好的......

我在解决这个问题时遇到了问题。

我有一个ng2上传图片,从那里它会对api做一个post req,但是我想有一个服务器(来自节点的http-server)只是为了在那里添加文件,但我不知道如何离开这里:(

所以ng2(FE) - > Hapi(API) - > http-server(文件存储)

这些是我的档案 的 upload.provider.js     const fs = require(' fs');

class UploadProvider {
  constructor(path, request, reply) {
    this.path = path;
    this.data = request.payload;
    this.reply = reply;
    this.image();
  }

  image() {
    if (this.data.uploadFile.hapi.filename) {
      const name = this.data.uploadFile.hapi.filename.replace(/\ /g,'-');
      const path = this.path + name;
      const file = fs.createWriteStream(path);

      file.on('error', (err) => { 
        console.error(err) 
      });

      this.data.uploadFile.pipe(file);

      this.data.uploadFile.on('end', (err) => { 
        var ret = {
          filename: this.data.uploadFile.hapi.filename.replace(/\ /g,'-'),
          headers: this.data.uploadFile.hapi.headers
        }
        this.reply(JSON.stringify(ret));
      })
    }
  }
}

module.exports = UploadProvider;

teaser.controller.js

const upload = require('../providers/upload.provider');
const Teaser = require('../model/teaser.model');

var teaser = {
  upload: (request, reply) => {
  new upload('http://127.0.0.1:8080/teaser-images/', request, reply);
},

....

我一直得到这个输出:

  

{错误:ENOENT:没有这样的文件或目录,打开' http://192.168.33.1:8080/teaser-images/IX4A6789.jpg'     错误:-2,     代码:' ENOENT',     系统调用:'打开',     路径:' http://127.0.0.1:8080/teaser-images/IX4A6789.jpg' }

非常感谢任何帮助,这一直困扰着我。

我真的想更好地理解流缓冲区的概念。

最佳, 乔

1 个答案:

答案 0 :(得分:0)

我忘记了浏览器最重要的事实之一......它们基于GET。

我试图将图像发送到不是服务器的地方。在文件夹上创建http服务器之后:

new upload('../images', request, reply);

然后在该文件夹上添加http-server我能够访问我想要的图像。