万事俱备只欠东风,经过苏南大叔的一些列教程讲述,这里迎来了第一个正式的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>

相关链接

结论

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

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

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

本站的忠实读者小伙伴,正在阅读下面这些文章: