使用Nextjs和强大功能将文件上传到Supabase存储

v9tzhpje  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(236)

我尝试上传一个文件到Supabase使用Nextjs API路由和强大的。下面是代码:

form.parse(req, async (err, fields, files) => {
            if (err) {
                console.error('Error', err)
                throw err
            }
            const {data, error} = await supabase 
                .storage
                .from('apg-bucket')
                .upload(files.image.originalFilename, files.image, {
                    contentType: files.image.mimetype,
                    cacheControl: '3600',
                    upsert: false,
                })

问题是当文件上传到Supabase时,这个值是0-150字节,而不是文件的总大小(7937字节)。

从日志记录中我可以看到文件通过表单进入API,并被强大的捕获。

想知道我做错了什么,为什么完整的文件没有上传到存储桶的原因?
已尝试从以下位置更改Supabase上载中的文件变量:

  • 文件。图像[0]
  • files.image.filepath
  • 文件[0]

上面所做的只是将Supabase中的字节值更改为0 - 50字节,而不是整个映像。
谢了,杰克

yc0p9oo0

yc0p9oo01#

刚刚更新了这个,已经想出了解决方案。
解决方案如下

form.parse(req, async (err, fields, files) => {
        if (err) {
            console.error('Error', err)
            throw err
        } else {
            console.log('Files:', files.image.filepath)

            const fileContent = await fs.promises.readFile(files.image.filepath)  //this is what was missing!

            const { data, error } = await supabase
                .storage
                .from('apg-bucket')
                .upload(files.image.originalFilename, fileContent, {
                    contentType: files.image.mimetype,
                    cacheControl: '3600',
                })
            
        }

原来需要fs模块,否则文件内容不会在调用中附加。

相关问题