我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

万事俱备只欠东风,经过苏南大叔的一些列教程讲述,这里迎来了第一个正式的php版本的oss上传demo。本文的代码功能非常非常简单,本地上传文件到服务器,服务器上传文件到oss,然后显示这个oss文件的访问地址。

苏南大叔:阿里云oss上传文件的php版本最简单demo - aliyun-oss-upload
阿里云oss上传文件的php版本最简单demo(图2-1)

里面涉及的参数及phar的概念,请参见苏南大叔以往的经验文章。链接具体见文末。测试环境:aliyun-oss-sdk@2.2.4

关键代码

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

<?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上传失败。

苏南大叔:阿里云oss上传文件的php版本最简单demo - 123
阿里云oss上传文件的php版本最简单demo(图2-2)

相关链接

结论

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

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

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

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

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