【问题标题】:How to get filename & save to disk in Hapi.js?如何在 Hapi.js 中获取文件名并保存到磁盘?
【发布时间】:2016-11-26 02:18:55
【问题描述】:

我编写了一个 Hapi.js 路由来接收上传的文件,并使用 Postman 成功调用了它。现在我想保存文件。

我该怎么做

  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], () => {      } );

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

这是上传的文件:

【问题讨论】:

  • 由于词法 this,我不会将箭头函数用于处理函数
  • 我们在整个应用程序中几乎只使用箭头功能,没有遇到任何问题
  • 它们不应该与处理程序一起使用,因为您会从 hapi 中丢失 this 上下文

标签: javascript node.js hapijs


【解决方案1】:

我找到了fs-promise,效果很好。

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

获取文件扩展名的方法如下:Node.js get file extension

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多