无法在 Parse Server 中上传文件

问题描述 投票:0回答:1

我尝试在远程部署我的 Angular 应用程序前端和 Parse 服务器后端,但我面临文件上传(图像)问题。

在本地,一切都按预期工作,但在远程,我无法像我想要的那样上传文件。

通常,如果上传图像,前端代码将图像上传到文件系统中(图像成功保存即可),解析后端代码(带有 beforeSave 触发器的云代码)获取基本图像 url,添加到缓冲区,调整缩略图大小并用另一个名称保存

但是在远程,当我尝试通过云代码中的图像网址获取时,出现连接超时。

通过控制台,我可以看到图像的 url,并且可以直接从浏览器访问它。

这是我的代码中执行此操作的部分:

   // image url is available
let fimg = await fetch(image.url())

   // at this point - connection timeout
    let buffer = Buffer.from(await fimg.arrayBuffer())

    const resizedImage = await sharp(buffer)
      .resize({
        width: 200,
        height: 200,
        withoutEnlargement: true,
        fit: 'inside',
      })
      .toBuffer()

    const file = new Parse.File('photo.jpg', {
      base64: resizedImage.toString('base64')
    })

    let savedFile = await file.save()

    obj.set('imageThumb', savedFile)

这是解析服务器的日志:

error: request to https://myapp.ch/api/files/api/6b53117cab2f9adc973de3ea9fe6b47f_minibougies.png failed, reason: connect ETIMEDOUT myip:443 {"code":141,"stack":"FetchError: request to https://myapp.ch/api/files/api/6b53117cab2f9adc973de3ea9fe6b47f_minibougies.png failed, reason: connect ETIMEDOUT myip:443\n    at ClientRequest.<anonymous> (/root/projectApp/node_modules/mailgun.js/dist/mailgun.node.js:2:64984)\n    at ClientRequest.emit (events.js:400:28)\n    at ClientRequest.emit (domain.js:475:12)\n    at TLSSocket.socketErrorListener (_http_client.js:475:9)\n    at TLSSocket.emit (events.js:400:28)\n    at TLSSocket.emit (domain.js:475:12)\n    at emitErrorNT (internal/streams/destroy.js:106:8)\n    at emitErrorCloseNT (internal/streams/destroy.js:74:3)\n    at processTicksAndRejections (internal/process/task_queues.js:82:21)"}

控制台仅显示:错误 400 错误请求

有什么想法吗?

提前致谢

parse-platform parse-server
1个回答
0
投票

通过将 fileAdapter 从 FSFilesAdapter 更改为 S3Adapter 找到解决方法,并直接在 DigitalOcean Space 中管理图像。

也许 Nginx 反向代理与 SSL / 解析服务器 / FSFilesAdapter 不是一个很好的组合?

我可以继续工作,但我认为了解更多是很有趣的

© www.soinside.com 2019 - 2024. All rights reserved.