我尝试在远程部署我的 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 错误请求
有什么想法吗?
提前致谢
通过将 fileAdapter 从 FSFilesAdapter 更改为 S3Adapter 找到解决方法,并直接在 DigitalOcean Space 中管理图像。
也许 Nginx 反向代理与 SSL / 解析服务器 / FSFilesAdapter 不是一个很好的组合?
我可以继续工作,但我认为了解更多是很有趣的