谷歌云功能丢失请求数据

编程入门 行业动态 更新时间:2024-10-04 11:18:07

谷歌云<a href=https://www.elefans.com/category/jswz/34/1771378.html style=功能丢失请求数据"/>

谷歌云功能丢失请求数据

我有一个作为 Google Cloud Function 托管的 Express 应用程序,但它在云上的工作方式与在本地工作的方式不同。

在我的 NextJS 应用程序中,我通过将 FileList 添加到 FormData 的新实例来将其发送到端点。我添加它的方式是遍历存储 FileList 的状态并将每个文件附加到 formData。

const [files, setFiles] = useState<FileList | undefined>();

const formData = new FormData();
for(let i = 0; i < files.length; i++){
    formData.append('pdfFile', files[i]);
}

然后我使用这个 formData 并将其作为获取请求的主体发送到 Cloud Function 端点

fetch('https://[function_uri]/extract', {method: 'POST', body: formData})
    .then((res) => res.json())
    .then((res) => console.log('Response: ', res))
    .catch((error) => console.error(error))

这是我如何设置 Express 应用程序

const express = require('express');
const pdfParse = require('pdf-parse');
const cors = require('cors');
const multer = require('multer');
const upload = multer();

const app = express();
app.use(cors());

app.post('/extract', upload.array('pdfFile'), async (req, res) => {
    res.set('Access-Control-Allow-Origin', '*');

    if (!req.files) {
        res.status(400);
        res.end();
    }
    const files = req.files;
    const response = [];

    if (files.length) {
        for (let i = 0; i < files.length; i++) {
            const buffer = Buffer.from(files[i].buffer);
            await pdfParse(buffer).then((result) => {
                response.push({
                    name: files[i].originalname,
                    text: result.text,
                });
            });
        }
    } else {
        const buffer = Buffer.from(files.buffer);
        await pdfParse(buffer).then((result) => {
            response.push({
                name: files.originalname,
                text: result.text,
            });
        });
    }

    res.json({ response });
});

app.listen(9090, () => console.log('Server running on port 9090.'));

module.exports = {
    app,
};

我正在使用 multer 获取文件,当在本地运行 express 应用程序时,一切正常,但是,一旦我将代码部署到 Google Cloud 平台,req.files 现在是一个空数组,而不是填充数据我预计在本地运行后会抛出错误,因为数据现在未定义。老实说,我不确定我是否发送了错误的数据,或者我是否在服务器上处理错误。这是我第一次使用 Google Cloud Functions,所以我一直在盲目地研究这一点。

下面是我期望从req.files得到的例子

[
  {
    fieldname: 'pdfFile',
    originalname: 'FileName.pdf',
    encoding: '7bit',
    mimetype: 'application/pdf',
    buffer: <Buffer 27 50 44 46 2d 31 2e 35 0d 0a 25 c5 b5 b5 b5 0d 0a 31 20 30 20 6a 62 6a 0d 0a 3c 3c 2f 54 79 70 65 2f 43 21 74 61 7c 6f 67 2f 50 61 67 65 73 20 32 20 ... 41169 more bytes>,
    size: 50283
  }
]
回答如下:

更多推荐

谷歌云功能丢失请求数据

本文发布于:2024-05-30 17:07:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770729.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:功能   数据   谷歌云

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!