2016-07-22 109 views
0

我写了一个Hapi.js路线来接收上传的文件,并使用邮递员成功地调用了它。现在我想保存文件。如何获取文件名并保存到Hapi.js中的磁盘?

我如何

  1. 获取文件扩展名?
  2. 将文件保存到磁盘?

这里是我的路线:

{ 
     method: 'POST', 
     path: this.config.apiPrefix + 'uploadprofilephoto', 
     config: { payload: { maxBytes: 10485760, /* 10 MB */ output: 'stream', parse: true } }, 
     handler: (request: hapi.Request, reply: hapi.IReply) => { 
     const result = new Promise<string>(async (resolve, reject) => { 
      try { 
      this.profilePhotoRouteHelper.savePhotoAndUploadToAws(jwtData.userId, request.payload['image']); 
      resolve(responseHelper.getSuccessResponse<string>(null, newJwt)); 
      } 
      catch (error) { 
      log.error(error); 
      resolve(responseHelper.getErrorResponse(ResponseErrorCode.unknownError)); 
      } 
     }); 
     reply(result); 
     } 

和如何保存一个想法:

fs.writeFile(filename, data, [encoding],() => {  }); 

,但我宁愿使用的承诺,如果可能的话等待。

下面是上传文件:

enter image description here

+0

我不会用箭头功能由于词汇这个 –

+0

我们使用几乎完全箭头功能在我们的应用程序,并没有任何问题的处理函数 – Richard

+0

他们不应该与处理程序一起使用,因为你从hapi中丢失了这个上下文 –

回答

0

我发现fs-promise,效果很好。

const photoId = uuid.v4(); 
    await fsp.writeFile(photoId + '__' + image.hapi.filename, image._data, 'utf8'); 

下面是如何得到的文件扩展名:Node.js get file extension