NodeJS 可怕的javascript -从formData获取文件并重新发送

inb24sb2  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(142)

这是我的API处理程序。

// Retrieve data.
    const form = formidable({ multiples: true });

    form.parse(request, async (err: any, fields: any, files: any) => {
      if (!drupal) {
        return response.status(500).send('Empty drupal handler.');
      }

      const { fieldName, webformId } = fields;
      const file = files[fieldName];

      if (fieldName && webformId && file) {
        // Build api url.
        const url = drupal.buildUrl(
          `/webform_rest/${webformId}/upload/${fieldName}`
        );

        // Build file form data.
        const body = new FormData();
        body.append('file', file);

        // Send file data.
        if (file) {
          const result = await drupal.fetch(url.toString(), {
            method: 'POST',
            headers: {
              'Content-Type': 'application/octet-stream',
              'Content-Disposition':
                'file; filename="' + file.originalFilename + '"',
            },
            body,
            withAuth: true,
          });

          const resultData = await result.json();

          if (result.ok && 'fid' in resultData) {
            return response.status(200).json(resultData.fid[0]['value']);
          }
          return response.status(500).send({ error: result.statusText });
        }
      }
    });

我在这里得到了一个formData。随后,我想将这个formData中包含的文件发送到另一个API。
一切看起来都很好,除了在第二个API的另一边,我得到一个损坏的文件,无法打开和小字节大小。
我的代码有什么问题?
thx

u3r8eeie

u3r8eeie1#

问题是,这里的body.append('file', file);文件变量不是File类型,它是文件的自定义表示,具有关于它的 meta信息。

相关问题