PHP上传文件到阿里云OSS,nginx代理访问

1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读)

2. 拿到相关配置

accessKeyId:*********
accessKeySecret:*********
endpoint:********
bucket:********

3.创建 oss.php 上传类 (基于thinkPHP5)

<?php
namespace app\controller;
use OSS\OssClient;
class Oss {
    private static $_instance;

    private function __construct() {
    }

    private function __clone() {
    }
    /**
     * 获取一个OssClient实例
     * @return null|OssClient
     */
    public static function getInstance() {
        if (!(self::$_instance instanceof OssClient)) {
            try {
                self::$_instance = new OssClient(env(‘oss.access_key_id‘), env(‘oss.access_key_secret‘), env(‘oss.endpoint‘), false);
            } catch (OssException $e) {
                printf(__FUNCTION__ . "creating OssClient instance: FAILED\n");
                printf($e->getMessage() . "\n");
                return null;
            }
        }
        return self::$_instance;
    }
    /**
     * 获取bucket
     * @return string
     */
    public static function getBucketName()
    {
        return env(‘oss.bucket‘);
    }
}

3.上传调用

   use app\controller\Oss;  .  .  .
    public function addShopImg(){
        $this->checkParams(‘shop_id‘);
        $file = $this->request->file(‘image‘);
        if ($file && ($file->getError() == ‘‘) && $file->checkImg() && $file->checkSize(5*1024*1024)) {
            $info = $file->move(APP_PATH . ‘../public/upload/shops/‘);
            //上传图片至阿里云oss
            $fileName = ‘biz_oss/upload/shops/‘ . $info->getFilename();
            $ossClient = Oss::getInstance();
            $bucket = Oss::getBucketName();
            $ossClient->uploadFile($bucket, $fileName, $info->getPathname());

            $data[‘shop_img‘] = ‘/upload/shops/‘.$info->getFilename();
            $data[‘shop_id‘] = $this->params[‘shop_id‘];
            $re = db(‘shopImg‘)->insert($data);
            if($re){
                Api::output();
            }else{
                Api::fail(2, ‘上传失败‘);
            }
        } else {
            Api::fail(1, ‘图片不合规‘);
        }
    }

4.访问 oss域名地址 不可在浏览器直接访问  可用nginx 代理

配置中加入:

location ^~ /biz_oss {
  proxy_pass http://xxxxxx.oss-cn-shenzhen-internal.aliyuncs.com;
}

重启nginx

nginx配置的域名(server_name)后接上 /biz_oss  如:kwdst.3ce.com/biz_oss  即可指向oss上资源存储的空间

如下  $oss_url = kwdst.3ce.com/biz_oss

<div style="text-align:center; width:100%; height:100%;">
    <img src="{$oss_url}{$img.shop_img}" style="vertical-align:middle;"  />
</div>

如此浏览器中html 即可访问加载 oss上图片资源。

原文地址:https://www.cnblogs.com/yimingwang/p/10220221.html

时间: 2024-11-05 17:30:44

PHP上传文件到阿里云OSS,nginx代理访问的相关文章

OSS上传文件到阿里云

最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云oss上去了, oss的使用网上有很多介绍,都是去配置一下需要的数据,然后直接调用他的api就可以了. 这里贴一段可以直接使用的oss代码,有需要的可以自己参考下. @Controller @RequestMapping("/ossfile") public class OSSFileController { @Autowired private EventidService eventi

angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值 //<setting name="accessKeyId" value="H6JSh0Y****z2cGa" /> //<setting name="ecr

koa中上传文件到阿里云oss实现点击在线预览和下载

比较好的在线预览的方法: 跳转一个新的页面,里面放一个iframe标签,或者object标签 <iframe src="xxx"></iframe> <object data="xxx"></object> 但是这两个标签也有限制,有些可以直接打开预览,有些则直接下载,具体总结如下: object:ppt不支持预览,直接下载doc不支持预览,直接下载txt不支持预览,直接下载pdf支持打开预览 图片支持预览,图片放大

.NET CORE上传文件到码云仓库【搭建自己的图床】

.NET CORE上传文件到码云仓库[搭建自己的图床] 先建一个公共仓库(随意提交一个README文件或者.gitignore文件保证master分支的存在),然后到gitee的个人设置页面找到[私人令牌]菜单创建一个access_token.Gitee官方还友好的提供了基于swagger的API文档和调试页面: https://gitee.com/api/v5/swagger#/postV5ReposOwnerRepoContentsPath 搭建步骤 1.新建一个名为imagebed的仓库

【UEditor】 UEditor整合项目上传资源到阿里云服务器

目录 关于此文 下载源码 JSP代码 Java代码 阿里云jar包引入配置 成功啦! 回到顶部 关于此文 项目中要实现编辑器生成带格式的html文档,存入模板,最后生成html的URL,所以选择了UEditor. UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点. 之前没有接触过编辑器,从头开始摸索.看API,看网上的例子.之前,用的是UMeditor,是UEditor的mini版本.用的人少,例子也少.让我很苦恼.之后又换回了完整版

Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)

1.此文章主要介绍内容 本文主要介绍怎样利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将全部訪问本地Nginx的请求加上OSS 签名转发给OSS,实现本地Nginx无缝衔接阿里云OSS,存储空间无限扩展,存储成本无限下降,数据安全%99.99-- . 2.本篇文章使用到的一些工具技术及怎样学习和获取 1.lua 本文用到的都是一些主要的lua,基本上花半小时阅读下lua的语法就能够轻松理解本文内容 2.N

上传指定url文件到阿里云oss

好处是不用下载到本地,也不用删除本地文件.省事! 先下载阿里云官方代码  https://github.com/aliyun/aliyun-oss-csharp-sdk 引用其中的 aliyun-oss-sdk 项目 代码如下: string endpoint = "http://oss-cn-beijing.aliyuncs.com"; OssClient client = new OssClient(endpoint, accessId, accessKey); var webCl

Eclipse(oxygen)上传项目到阿里云Git

URL地址1:https://blog.csdn.net/u012925792/article/details/79399048 URL地址2:https://www.cnblogs.com/tianlifitting/p/8038597.html 原文地址:https://www.cnblogs.com/curedfisher/p/12115186.html

PHP实现阿里云OSS文件上传(支持批量)

上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(PHP版) 通过Github下载 2.解压后,可自行修改目录名称,以下为本人项目实例(aliyun_oss改过之后的名称) 项目目录结构如下: 3.Index.php 为文件上传静态表单页 4.do_upload.php 为文件处理控制页,封装的代码如下:上传文件相关的辅助函数可以自行封装,本文是为了便于