如何 Wordpress 使用 OSS 上传图片、文件

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 如何使用 OSS 上传 Wordpress 的图片文件

准备

  • 可访问的 wordpress 站点
  • OSS

操作

1、OSS 相关

创建 Bucket 取名为 wordpress-test1 ,按照控制台指引填入其他的信息,点击确定即可:

创建完成后,进入到 Bucket 详情,点击 Bucket 配置>域名管理 绑定 OSS 访问域名:

输入域名后,阿里云会自动检测域名的管理是否也在阿里云,如果域名管理也在阿里云,开启自动添加 CNAME 记录会自动帮你做解析处理。如果没有可以到对应的域名管理控制台自行添加,这里不再赘述。

为了访问速度更快,这里还需要配置一下 CDN 。在添加域名成功后点击第二列的阿里云 CDN 加速,然后会自动跳转到 CDN 创建页面,参考控制台步骤创建即可:

最后一步,创建完成后到域名解析里面找到刚刚绑定的域名,将域名解析到 CDN 对应的 CNAME 即可。

2、设置 Ram 用户访问 OSS

进入到 访问控制 控制台,创建新用户或者选择已有用户,为其分配 OSS 的使用权限:

回到 认证管理 页面,如果没有 AccessKey 的话可以创建一个。这个 key 和 secret 用于后面 wordpress 插件配置使用,请保存好。

3、安装 OSS 上传插件

进入到 wordpress 的管理后台,进入 插件>安装插件 ,在搜索框中输入 oss 进行搜索,然后选择 “WPOSS阿里云对象存储”这个插件进行安装。

启用刚安装的扩展,进行设置:

设置完成后保存,进入到 wordpress 的媒体库页面可实验一下是否可用。

如上图,上传成功后图片可正常显示,并且在 文件URL 中的连接为绑定的 OSS 域名,红框中的路径为上面配置中填写的路径。

4、上传插件问题

插件使用后,会发现上传的文件为图片的各个尺寸的缩略图,如下图的文件名,但是该图片的原始图片并没有在目录中,这就导致在 wordpress 中使用原图的时候会出现图片找不到的情况。

对插件的源代码进行了一下修改,进入到文件 wp-content/plugins/wposs/index.php ,找到 upload_and_thumbs 方法,将代码改为如下内容:

/**
 * 上传图片及缩略图
 * @param $metadata: 附件元数据
 * @return array $metadata: 附件元数据
 * 官方的钩子文档上写了可以添加 $attachment_id 参数,但实际测试过程中部分wp接收到不存在的参数时会报错,上传失败,返回报错为“HTTP错误”
 */
public function upload_and_thumbs( $metadata ) {
    //新增修改内容 ------ start
    if (isset( $metadata['original_image'] )) {
        # 1.原始图片
        $attachment_key =  dirname($metadata['file']) . '/' .$metadata['original_image'];  // 远程key路径, 此路径不是以/开头
        $attachment_local_path = $this->wp_upload_dir['basedir'] . '/' . $attachment_key;  # 在本地的存储路径
        $this->_file_upload($attachment_key, $attachment_local_path);  # 调用上传函数
    }
    //新增修改内容 ------ end
    if (isset( $metadata['file'] )) {
        # 1.先上传主图
        $attachment_key = $metadata['file'];  // 远程key路径, 此路径不是以/开头
        $attachment_local_path = $this->wp_upload_dir['basedir'] . '/' . $attachment_key;  # 在本地的存储路径
        $this->_file_upload($attachment_key, $attachment_local_path);  # 调用上传函数
    }
    # 如果存在缩略图则上传缩略图
    if (isset($metadata['sizes']) && count($metadata['sizes']) > 0) {
        foreach ($metadata['sizes'] as $val) {
            $attachment_thumbs_key = dirname($metadata['file']) . '/' . $val['file'];  // 生成object 的 key
            $attachment_thumbs_local_path = $this->wp_upload_dir['basedir'] . '/' . $attachment_thumbs_key;  // 本地存储路径
            $this->_file_upload($attachment_thumbs_key, $attachment_thumbs_local_path);  //调用上传函数
        }
    }
    return $metadata;
}

由此即可解决原图无法上传的问题。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
1月前
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
971 1
|
5月前
|
数据处理 对象存储
如何利用 OSS 转换 webp 文件为jpeg
如何利用 OSS 转换 webp 文件为jpeg,OSS 样式使用
1526 1
|
1月前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
|
6月前
|
开发工具 对象存储 Python
OSS上,如果你想对一个已经存在的文件进行追加写入
OSS上,如果你想对一个已经存在的文件进行追加写入
249 1
|
8月前
|
开发工具 对象存储 Python
使用Python的SDK从OSS中下载指定日期的所有文件
使用Python的SDK从OSS中下载指定日期的所有文件
210 1
|
11天前
|
存储 数据可视化 安全
对象存储OSS产品常见问题之有几十亿个txt文件,单个4kb,使用oss如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
43 11
|
11天前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
46 9
|
26天前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之使用oss读取csv文件至odps 报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
JSON 网络安全 PHP
WordPress上传图片错误:不是合法的JSON响应
最近在迁移WordPress到新服务器时遇到一个问题,就是在编辑文章上传图片时,会报错:此响应不是合法的JSON响应,经过多方验证,最后得出结论,是由于php的一些模块没有开启的原因,下面就详细讲一下,php安装后应该开启哪些模块及开启方法。
57 0

热门文章

最新文章

相关产品

  • 对象存储