开发者社区 问答 正文

各位大神帮忙看看oss直传后怎么和自己的服务器通信啊?

正在写一个oss本地上传工具,现在需要把文件上传到oss服务器上,然后得到文件的存储位置和一些其他的数据再放入自己的数据库中。
因为现在我们的服务器还是192.168.0.200这种局域网的, [font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]回调url不是公网的,这种( Web端直传实践——服务端签名直传并设置上传回调 [font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体])就没法用。
[font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]现在我用的是( Web端直传实践 —— 采用服务端签名后直传),发帖不足5,没法放链接啊~
请问这种我上传成功后如何把文件的oss的存储位置放到我自己的数据库中哦?

展开
收起
一沙一世界来了 2016-08-17 11:28:56 2667 分享 版权
阿里云 AI 助理回答

在使用阿里云OSS进行文件上传时,如果您的服务器处于内网环境且无法直接通过公网回调URL接收上传完成的通知,您可以通过以下几种方式将文件的OSS存储位置(即Object URL或其元数据信息)保存到自己的数据库中:

  1. 客户端上传后通知服务端

    • 在客户端(如Web浏览器)成功上传文件到OSS后,可以立即发起一个请求到您的服务器API,传递文件的关键信息,如文件名、Bucket名称等。您的服务器端接收到这些信息后,可以自行构造文件的完整URL(https://<your-bucket-name>.oss-cn-hangzhou.aliyuncs.com/<your-object-key>)并将其存储到数据库中。
  2. 手动轮询或者定时任务检查OSS

    • 如果您的业务允许一定的延迟,可以在服务器端设置一个定时任务,定期查询OSS指定目录下的新文件,并将这些文件的元数据(包括URL)同步到数据库中。这种方法较为简单,但实时性较差。
  3. 使用OSS事件通知到内部系统

    • 虽然您的服务器没有公网IP,但如果您的VPC与OSS所在的VPC之间有连接(例如通过高速通道、NAT网关或其他网络打通方案),您可以配置OSS的事件通知(Event Notifications)到您的内部系统。当OSS中的对象状态变化(如创建新对象)时,OSS会自动发送消息到您指定的内部服务地址(需确保该地址对OSS服务是可访问的)。然后,您的内部系统可以根据接收到的通知内容,提取文件信息并存储到数据库中。
  4. 利用ECS实例作为代理

    • 如果您有一台具有公网访问能力的ECS实例,可以考虑通过这台ECS作为代理,接收OSS的回调请求,处理逻辑后再将数据存入数据库。具体操作上,OSS的回调URL指向这台ECS上的应用接口,该应用处理完逻辑后,再将数据写入到数据库中。

选择哪种方法取决于您的具体需求和架构限制。对于大多数场景,推荐使用第一种方法(客户端上传后通知服务端),因为它实现简单且不需要额外的基础设施支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答