阿里云OSS,PHP简单上传文件并返回地址

Posted 小猿笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云OSS,PHP简单上传文件并返回地址相关的知识,希望对你有一定的参考价值。

需要下载php 的sdk包,注意路径问题

up.php

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<form action="oss.php" method="post" enctype="multipart/form-data">
			<!--用户名:<input type="text" name="uname"><br><br>-->
			请选择文件:<input type="file" name="filename"><br><br>
			<input type="submit" value="点击上传">
		</form>		
	</body>
</html>

oss.php

<?php
require_once \'./aliyun-oss-php-sdk-master/autoload.php\';
header("content-type:text/html;charset=utf-8");         //设置编码
if (is_file(__DIR__ . \'/../autoload.php\')) {
    require_once __DIR__ . \'/../autoload.php\';
}
if (is_file(__DIR__ . \'/../vendor/autoload.php\')) {
    require_once __DIR__ . \'/../vendor/autoload.php\';
}
use OSS\\OssClient;
use OSS\\Core\\OssException;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
$accessKeyId = "accessKeyId";
$accessKeySecret = "accessKeySecret";
// Endpoint以杭州为例,其它Region请按实际情况填写。这个先手动上传个图片,复制URL里面就有这个东西
$endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 存储空间名称
$bucket= "bucket";//创建的桶名
// 文件名称
$object = $_FILES[\'filename\'][\'name\'];
// <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt
$filePath = $_FILES[\'filename\'][\'tmp_name\'];
 
// 上传文件时设置回调。
// callbackUrl为,如http://oss-demo.aliyuncs.com:23450或http://127.0.0.1:9090。//
// callbackHost为回调请求消息头中Host的值,如oss-cn-hangzhou.aliyuncs.com。//oss-cn-hangzhou.aliyuncs.com
$url =
\'{
     "callbackUrl":"可访问的ip地址",
     //"callbackBody" : "{bucket:${bucket}, object:${object}}",//这个是json的写法,如果使用,相应的要改callbackBodyType的类型为application/json
     "callbackBody" : "bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}",
     "callbackBodyType" : "application/x-www-form-urlencoded"    
 }\';
 
$var =
   \'{
       "x:var1":"value1",
       "x:var2":"值2"
    }\';
$options = array(
  OssClient::OSS_CALLBACK => $url,
  OssClient::OSS_CALLBACK_VAR => $var
);
 
try{
  
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
	$ossClient->uploadFile($bucket, $object, $filePath);//上传文件
 	$ossClient = (array)$ossClient;//对象转换成数组
  	echo \'<pre>\';
    var_dump($ossClient);//打印所有信息
    var_dump(array_values($ossClient)[4]);//把所有value值取出并按照索引数组排列,取4是你上传的地址
  
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\\n");
    printf($e->getMessage() . "\\n");
    return;
}
 
print(__FUNCTION__ . ": OK" . "\\n");

文章转自:https://blog.csdn.net/qq_29994361/article/details/85690396

以上是关于阿里云OSS,PHP简单上传文件并返回地址的主要内容,如果未能解决你的问题,请参考以下文章

python提取word文件中的图片,并上传阿里云OSS,返回html图片标签

阿里云oss无法上传大文件怎么办

Laravel 上传文件到阿里云

Laravel 上传文件到阿里云

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

在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程