2016-07-22 41 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