阿里云oss上传文件的php版本最简单demo
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
万事俱备只欠东风,经过苏南大叔的一些列教程讲述,这里迎来了第一个正式的php版本的oss上传demo。本文的代码功能非常非常简单,本地上传文件到服务器,服务器上传文件到oss,然后显示这个oss文件的访问地址。
里面涉及的参数及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>
代码说明
下面的是一些简要的函数说明文字:
current
函数:http://doc.php.sh/zh/function.current.htmlend
函数:http://doc.php.sh/zh/function.end.htmlmove_uploaded_file
函数:http://doc.php.sh/zh/function.move-uploaded-file.html
move_uploaded_file
是文件上传的关键函数,配合$_FILES
就是传统的文件上传功能。
- 如果文件不能上传,请检查php.ini中有关文件上传的设置,有很多个设置项目可以造成上传失败,这里就不做赘述。如果一切正常,将可以在你的oss的文件管理里面,看到上传的文件。
- 注意
move_uploaded_file()
中的新文件名称,不能出现中文字样,否则可能会造成最终的oss上传失败。
相关链接
- 《如何构建aliyunoss的phar包》 https://newsn.net/say/aliyun-oss-phar.html
- 《如何获取阿里云oss所需的accesskeyid和accesssecret》 https://newsn.net/say/aliyun-oss-accesskeyid.html
- 《如何获取阿里云oss所需的bucket和endpoint》 https://newsn.net/say/aliyun-oss-bucket-endpoint.html
结论
oss上传还是比较简单的,在接下来的文章中,苏南大叔将要和您分享更多的oss相关实例。敬请关注苏南大叔的oss系列文章。https://newsn.net/tag/oss/ 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
这是一个新的测试