如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

万事俱备只欠东风,经过苏南大叔的一些列教程讲述,这里迎来了第一个正式的php版本的oss上传demo。本文的代码功能非常非常简单,本地上传文件到服务器,服务器上传文件到oss,然后显示这个oss文件的访问地址。里面涉及的参数及phar的概念,请参见苏南大叔以往的经验文章。链接具体见文末。

关键代码

请注意替换下面代码中的关键参数!

<?php
require 'aliyun-oss-php-sdk-2.2.4.phar';
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<accessKeyId>";
$accessKeySecret = "<accessKeySecret>";
$bucket = "<bucket>"; //ossdemo
$endpoint = "<endpoint>";  //oss-cn-beijing.aliyuncs.com
$uploadDir = 'uploads/';
$uploadDirReal = dirname(__FILE__) . "/" . $uploadDir;
if (!is_dir($uploadDirReal)) {
    mkdir($uploadDirReal, 777, true);
}
function ossUploadFile($ossClient, $object) {
    global $bucket;
    $filePath = dirname(__FILE__) . "/" . $object;
    try {
        $ossClient->uploadFile($bucket, $object, $filePath);
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return false;
    }
    return true;
}
?>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>ossdemo</title>
    </head>
    <body>
        <form atcion = "upload.php" method = "POST" encType = "multipart/form-data">  
            upload: <input type = "file" name = "img"><br>  
            <input type = "submit" name = 'submit' value = "Send">  
        </form><br/>
        <?php
        if (isset($_POST['submit']) && !empty($_POST['submit'])) {
            if ($_FILES['img']['error'] != 4) {
                $files = $_FILES['img'];
                $fileName = $files['name'];
                $names = explode('.', $fileName);
                $newname = md5(current($names)) . '_' . time() . '.' . end($names);
                $fileSaved = $uploadDirReal . $newname;
                if (!move_uploaded_file($files['tmp_name'], $fileSaved)) {
                    echo '移动文件失败';
                    echo "<pre>";
                    print_r($files);
                    print_r($fileSaved);
                    echo "</pre>";
                    exit();
                }
            }
            //oss对象
            try {
                $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
            } catch (OssException $e) {
                print $e->getMessage();
            }
            $filePath = $uploadDir . $newname;
            $ossDone = ossUploadFile($ossClient, $filePath);
            if ($ossDone) {
                $url = "http://" . $bucket . "." . $endpoint . "/" . $filePath;
                echo "<a href='" . $url . "' target='_blank'>" . $url . "</a><br/>";
            } else {
                //fail.
            }
        }
        ?>
    </body>
</html>

代码说明

下面的是一些简要的函数说明文字:

move_uploaded_file是文件上传的关键函数,配合$_FILES就是传统的文件上传功能。

  • 如果文件不能上传,请检查php.ini中有关文件上传的设置,有很多个设置项目可以造成上传失败,这里就不做赘述。如果一切正常,将可以在你的oss的文件管理里面,看到上传的文件。
  • 注意move_uploaded_file()中的新文件名称,不能出现中文字样,否则可能会造成最终的oss上传失败。

阿里云上传文件的php版本最简单demo - 123

阿里云上传文件的php版本最简单demo(图1-1)

相关链接

结论

oss上传还是比较简单的,在接下来的文章中,苏南大叔将要和您分享更多的oss相关实例。敬请关注苏南大叔的oss系列文章。https://newsn.net/tag/oss/

  【php】秘籍文章入口,仅传授于有缘之人  php    aliyun

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/aliyun-oss-php-demo.html
上一篇好文:如何获取阿里云oss所需的bucket和endpoint?
下一篇好文:electron如何禁用本地缓存

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~