阿里雲oss上傳的圖片通過url可以直接訪問,而不是直接下載圖片
主要是設置下Content-Type 即OssClient::OSS_CONTENT_TYPE參數 類型設爲對應的 比如image/jpg
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$options = array(
// 可以參看https://help.aliyun.com/document_detail/31859.html?spm=a2c4g.11186623.2.10.481e2b72ggLS4F#concept-lkf-swy-5db
OssClient::OSS_CONTENT_TYPE => 'image/jpg', // 簡單的舉例使用 要根據實際的圖片類型 可以看下MimeTypes::getMimetype()裏的
);
$ossClient->putObject($bucket, $object, $content, $options);
下面是簡單的一個測試demo
composer require aliyuncs/oss-sdk-php
<?php
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 = "update me";
$accessKeySecret = "update me";
// Endpoint以杭州爲例,其它Region請按實際情況填寫。
$endpoint = "update me";
// 存儲空間名稱
$bucket= "update me";
// 文件名稱
$object = "update me";
// 上傳圖片
try {
$content = file_get_contents($object);
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$options = array(
// 可以參看https://help.aliyun.com/document_detail/31859.html?spm=a2c4g.11186623.2.10.481e2b72ggLS4F#concept-lkf-swy-5db
OssClient::OSS_CONTENT_TYPE => 'image/jpg', // 簡單的舉例使用 要根據實際的圖片類型
);
$ossClient->putObject($bucket, $object, $content, $options);
} catch (OssException $e) {
print $e->getMessage();
}
// 獲取圖片臨時訪問鏈接
/*try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// 生成一個帶簽名的URL,有效期是3600秒,可以直接使用瀏覽器訪問。
$timeout = 3600;
// $options 可以參考https://www.alibabacloud.com/help/zh/doc-detail/47735.htm?spm=a2c63.p38356.b99.530.2b124f7cdGTn1g
// $options = array(
// OssClient::OSS_FILE_DOWNLOAD => $download_file,
// OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100",
// );
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print("rtmp url: \n" . $signedUrl);
} catch (OssException $e) {
print $e->getMessage();
}*/
// 獲取文件內容
/*try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$content = $ossClient->getObject($bucket, $object);
print("object content: " . $content);
} catch (OssException $e) {
print $e->getMessage();
}*/
// 刪除文件
/*try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$ossClient->deleteObject($bucket, $object);
} catch (OssException $e) {
print $e->getMessage();
}*/
// 列舉文件
/*try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$listObjectInfo = $ossClient->listObjects($bucket);
$objectList = $listObjectInfo->getObjectList();
if (!empty($objectList)) {
foreach ($objectList as $objectInfo) {
print($objectInfo->getKey() . "\t" . $objectInfo->getSize() . "\t" . $objectInfo->getLastModified() . "\n");
echo("<br>");
}
}
} catch (OssException $e) {
print $e->getMessage();
}*/
// 列舉存儲空間
/*try{
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$bucketListInfo = $ossClient->listBuckets();
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
$bucketList = $bucketListInfo->getBucketList();
foreach($bucketList as $bucket) {
print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
}
*/