• 欢迎 游客 您的光临,下载之前请先阅读 积分规则 。任何技术问题请在论坛提问,本站定制插件、模板主题。售前、售后问题请联系QQ:5916171
    本站自由发布资源可赚取积分及人民币(可提现)(保证资源真实可用,如被举报封号处理。谨慎分布)。
  • 即日起发表主题、回帖、发布&更新资源、创建&回复私信、发布&回复个人动态均需要验证手机号码,其它不受影响。如不便可进群提问。点击链接加入群聊【XenForo讨论社区】:群号1:143277648

技巧教程 XF2.3 无需安装任何插件,直接设置上传附件到OSS

  • 主题发起人 主题发起人 hyken
  • 开始时间 开始时间
UID
85
注册
2018/01/05
消息
52
黄金
1,765G
  • #1
下面教程 可以直接设置上传附件到OSS,而不需要安装任何插件

XF2.3功能 已经配置好了亚马逊S3 SDK了,所以只需要配置下列参数即可。故本教程仅适用于 XF2.3以上版本

首先请获取你在用的OSS提供商的三个关键参数,分别是key secret 以及你存储的bucket 桶名。请注意,key和secret 的权限请配置好允许修改上传OSS权限。

具体怎样获取,不详细说明,自行搜索

下面以阿里云OSS示例

1. 在OSS后台中取得桶名 bucket名
1671854829655.png


2、在src/config.php 添加下列关键代码

endpoint指OSS服务商的地址,这里以北京阿里云OSS的地址示例

代码:
扩展 折叠 复制
$s3 = function()
{
   return new \Aws\S3\S3Client([
      'credentials' => [
         'key' => '你的KEY',
         'secret' => '你的密钥'
      ],
      'region' => 'oss-cn-beijing',
      'version' => 'latest',
      'endpoint' => 'https://oss-cn-beijing.aliyuncs.com/',
      'http' => [
            'verify' => true, // 默认true SSL 验证  如果网站非https 填false
         ],
   ]);
};

//两个参数,bucket桶名 以及自定义文件夹名称,存储的附件将在此文件夹中
$config['fsAdapters']['data'] = function() use($s3)
{
   return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'bucket桶名', '文件夹名a');
};

//存储缩略图,头像    注意这个文件夹名要以上一个一样
$config['externalDataUrl'] = function($externalPath, $canonical)
{
   return 'https://桶名.oss-cn-beijing.aliyuncs.com/文件夹名a/' . $externalPath;
};

//此配置可不加,不加的话本地internal-data会存储一份,加了的话本地不会存储,直接上传到OSS。建议加上去
$config['fsAdapters']['internal-data'] = function() use($s3)
{
   return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'bucket桶名', '文件夹名a/internal_data');
};
 
打赏用户
林辞
目前为止觉得2.3非常有用的功能
 
  • #3
有没有不依赖插件 上传到其他ftp/sftp存储的代码?
 
  • #4
这样操作的话,图片的流量是不是还是经过网站的?还是说直接从oss加载?(指的是附件,缩略图 头像除外)
 
  • #7
但是我看附件地址还是论坛的附件地址啊,不是oss的地址
上传到oss的都是.data后缀的文件,这些文件没法直接读取,难道不是论坛先读取后转换成对应类型,给到用户吗。这个过程不就是要走论坛和oss两个地方的流量了吗
 
  • #8
上传到oss的都是.data后缀的文件,这些文件没法直接读取,难道不是论坛先读取后转换成对应类型,给到用户吗。这个过程不就是要走论坛和oss两个地方的流量了吗
你的资源文件没有上传到OSS?

读取资源文件的话 先请求论坛的(非真实资源地址) 然后他会走逻辑会自动转到去OSS的真正存放资源地址
 
  • #9
你的资源文件没有上传到OSS?

读取资源文件的话 先请求论坛的(非真实资源地址) 然后他会走逻辑会自动转到去OSS的真正存放资源地址
反正我按照你给的代码配置的,上传文件后oss那边都是.data后缀的文件。这些文件难道不需要经过论坛能直接读取?
 
  • #10
反正我按照你给的代码配置的,上传文件后oss那边都是.data后缀的文件。这些文件难道不需要经过论坛能直接读取?
你OSS 有没有一个叫attachments的文件夹,这个文件夹是放附件的资源。而internal_data/attachments 这个是放data文件 缩略图的
 
  • #12
好像不知道为什么上传图片不加载
 
后退
顶部 底部