/** * 当个上传文件并返回上传的URL地址 * @param $filename string 要保存的文件名称 注意如果存在目录的话 * @param $filepath string 文件在服务器(本地的绝对或者相对路径,这里的服务器实际上是本地)上的路径 * @return bool or url */ public function upload2AliyunSdkSingle($filename, $filepath) { $dir = C('ALIYUN_DIR'); //保存在阿里云的基本路径 $endpoint = C('ALIYUN_endpoint'); //阿里云的节点信息 请自行查阅本字段意义 $midStr = 'upload/' . date('y') . '/' . date('m') . '/' . date('d') . '/'; //这里是为了保存的路径暂时以当前时间为准 try { $ossClient = new OssClient(C('ALIYUN_KeyId'), C('ALIYUN_KeySecret'), $endpoint); //这里要放入你从阿里云获得的key和secret这里我做成了配置项读取 } catch (OssException $e) { print $e->getErrorMessage(); } $ossClient->setTimeout(3600); // 设置请求超时时间 $ossClient->setConnectTimeout(10); //设置连接超时时间 try { $ossClient->uploadFile(C('ALIYUN_bucket'), $dir . $midStr . $filename, $filepath); } catch (OssException $e) { return false; } $ret = str_replace('http://', 'http://' . C('ALIYUN_bucket') . '.', $endpoint . '/' . $dir . $midStr . $filename); //返回拼接的http url return $ret; }
public function testConstrunct8() { try { $ossClient = new OssClient(Config::OSS_ACCESS_ID, Config::OSS_ACCESS_KEY, "http://123.123.123.1", true); $ossClient->listBuckets(); $this->assertFalse(true); } catch (OssException $e) { } }
/** * 删除bucket的Logging配置 * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ function deleteBucketLogging($ossClient, $bucket) { try { $ossClient->deleteBucketLogging($bucket); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print __FUNCTION__ . ": OK" . "\n"; }
/** * 删除bucket的防盗链配置 * Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。 * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ function deleteBucketReferer($ossClient, $bucket) { $refererConfig = new RefererConfig(); try { $ossClient->putBucketReferer($bucket, $refererConfig); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print __FUNCTION__ . ": OK" . "\n"; }
/** * Get the signed download url of a file. * * @param string $path * @param int $expires * @param string $host_name * @param bool $use_ssl * @return string */ public function getSignedDownloadUrl($path, $expires = 3600, $host_name = '', $use_ssl = false) { $object = $this->applyPathPrefix($path); $url = $this->client->signUrl($this->bucket, $object, $expires); if (!empty($host_name) || $use_ssl) { $parse_url = parse_url($url); if (!empty($host_name)) { $parse_url['host'] = $this->bucket . '.' . $host_name; } if ($use_ssl) { $parse_url['scheme'] = 'https'; } $url = (isset($parse_url['scheme']) ? $parse_url['scheme'] . '://' : '') . (isset($parse_url['user']) ? $parse_url['user'] . (isset($parse_url['pass']) ? ':' . $parse_url['pass'] : '') . '@' : '') . (isset($parse_url['host']) ? $parse_url['host'] : '') . (isset($parse_url['port']) ? ':' . $parse_url['port'] : '') . (isset($parse_url['path']) ? $parse_url['path'] : '') . (isset($parse_url['query']) ? '?' . $parse_url['query'] : ''); } return $url; }
public function tearDown() { if (!$this->ossClient->doesBucketExist($this->bucket)) { return; } $objects = $this->ossClient->listObjects($this->bucket, array('max-keys' => 1000, 'delimiter' => ''))->getObjectList(); $keys = array(); foreach ($objects as $obj) { $keys[] = $obj->getKey(); } if (count($keys) > 0) { $this->ossClient->deleteObjects($this->bucket, $keys); } $uploads = $this->ossClient->listMultipartUploads($this->bucket)->getUploads(); foreach ($uploads as $up) { $this->ossClient->abortMultipartUpload($this->bucket, $up->getKey(), $up->getUploadId()); } $this->ossClient->deleteBucket($this->bucket); }
/** * 判断object是否存在 * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ function doesObjectExist($ossClient, $bucket) { $object = "oss-php-sdk-test/upload-test-object-name.txt"; try { $exist = $ossClient->doesObjectExist($bucket, $object); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print __FUNCTION__ . ": OK" . "\n"; var_dump($exist); }
/** * 列出用户所有的Bucket * * @param OssClient $ossClient OssClient实例 * @return null */ function listBuckets($ossClient) { $bucketList = null; try { $bucketListInfo = $ossClient->listBuckets(); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print __FUNCTION__ . ": OK" . "\n"; $bucketList = $bucketListInfo->getBucketList(); foreach ($bucketList as $bucket) { print $bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n"; } }
public function testConstrunct9() { try { $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); $ossClient->listBuckets(); } catch (OssException $e) { $this->assertFalse(true); } }
/** * @inheritDoc */ public function __construct($accessKeyId, $accessKeySecret, $endpoint, $isCName, $securityToken) { parent::__construct($accessKeyId, $accessKeySecret, $endpoint, $isCName, $securityToken); }
use OSS\Http\RequestCore; use OSS\OssClient; use OSS\Core\OssException; const OSS_ACCESS_ID = '您从OSS获得的AccessKeyId'; const OSS_ACCESS_KEY = '您从OSS获得的AccessKeySecret'; const OSS_ENDPOINT = 'OSS的域名,如 oss-cn-hangzhou.aliyuncs.com'; $bucket = "您在OSS上的Bucket"; //绑定OSS的URL,前面要加http,比如 http://www.yoursite.com/ $urls = '您访问OSS的地址/'; //读取图片base64编码格式 $base64_image_content = file_get_contents("php://input"); if (preg_match('/^(data:\\s*image\\/(\\w+);base64,)/', $base64_image_content, $result)) { $type = $result[2]; if ($type != "png") { exit("0"); } } $files = time(); //传到OSS $base64_body = substr(strstr($base64_image_content, ','), 1); $object = "face/" . $files . ".png"; $content = base64_decode($base64_body); $ossClient = new OssClient(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT, false); try { $ossClient->putObject($bucket, $object, $content); } catch (OssException $e) { print $e->getMessage(); } session_start(); $_SESSION['face'] = $urls . "face/" . $files . ".png"; echo "1";
public function postFaceUpload(Request $request) { $content = $request->getContent(); $requestUri = $request->getRequestUri(); $authorization = @base64_decode($request->server('HTTP_AUTHORIZATION')); $ossPubKeyUrl = @base64_decode($request->server('HTTP_X_OSS_PUB_KEY_URL')); $pubKey = @file_get_contents($ossPubKeyUrl); $pos = strpos($requestUri, '?'); if (false === $pos) { $authString = urldecode($requestUri) . "\n" . $content; } else { $authString = urldecode(substr($requestUri, 0, $pos)) . substr($requestUri, $pos, strlen($requestUri) - $pos) . "\n" . $content; } if ($pubKey && openssl_verify($authString, $authorization, $pubKey, OPENSSL_ALGO_MD5)) { try { $id = decrypt($request->input('identifier')); $user = User::find($id); $config = config('aliyun.oss.archimore'); $oss = new OssClient($config['access_key_id'], $config['access_key_secret'], $config['endpoint'], $config['is_cname'], $config['security_token']); $user->face && $oss->deleteObject('archimore', $user->face); $user->face = $request->input('object'); $user->save(); $data = ['status' => true, 'message' => '头像设置成功', 'face' => $config['image_base_url'] . $request->input('object') . $config['image_style_separator'] . 'face-middle']; } catch (\Exception $e) { $data = ['status' => false, 'message' => '头像设置失败']; } } else { $data = ['status' => false, 'message' => '头像上传失败']; } $data = json_encode($data); return response($data, 200, ['Content-Type' => 'application/json', 'Content-Length' => strlen($data)]); }
<?php require_once './autoload.php'; use OSS\OssClient; use OSS\Core\OssException; $time = $_GET["time"]; $images = $_GET["images"]; $imagesarr = explode(",", $images); $imagescount = count($imagesarr); if ($imagescount >= 1) { $accesskeyid = "zqFGz1zqtNXd7e49"; $accesskeysecret = "QyMtSHSYO9nPXm8O26Ls5jtueoEBFv"; $endpoint = "oss-cn-qingdao.aliyuncs.com"; $bucketname = "jzsnet"; try { $ossClient = new OssClient($accesskeyid, $accesskeysecret, $endpoint); for ($i = 0; $i < $imagescount; $i++) { $realimage = $imagesarr[$i]; $realimagepath = __DIR__ . "/ueditor/php/upload/image/" . $time . "/" . $realimage; $ossClient->uploadFile($bucketname, $realimage, $realimagepath); } } catch (OssException $e) { print $e->getMessage(); } }
$postResult = curl_post($serverUrl, array('action' => 'delete', 'filedir' => $fileDir, 'filename' => $ming, 'token' => $deleteToken)); if ($postResult == "ok") { echo "ok.删除成功"; deleteShare($key1, $con); } else { echo "bad.删除失败,但上传记录将被删除"; deleteShare($key1, $con); } break; case oss: $accessKeyId = $ak; $accessKeySecret = $sk; $endExplode = explode(".", $serverUrl); $endpoint = "http://" . $endExplode[1] . "." . $endExplode[2] . "." . $endExplode[3]; try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); } catch (OssException $e) { print "bad.无法连接至存储服务器"; } $object = $ming; try { $ossClient->deleteObject($bucketName, $object); } catch (OssException $e) { echo "bad.删除失败,但上传记录将被删除"; deleteShare($key1, $con); return; } echo "ok.删除成功"; deleteShare($key1, $con); break; case 'upyun':
$ymd = date("Ymd"); $save_path .= $ymd . "/"; $save_url .= $ymd . "/"; if (!file_exists($save_path)) { mkdir($save_path); } //新文件名 $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext; //移动文件 $file_path = $save_path . $new_file_name; if (move_uploaded_file($tmp_name, $file_path) === false) { alert("上传文件失败。"); } $object = "attached/" . $dir_name . "/" . $ymd . "/" . $new_file_name; $content = $file_path; $ossClient = new OssClient(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT, false); try { $ossClient->uploadFile($bucket, $object, $content); } catch (OssException $e) { print $e->getMessage(); } /*清空本地的存储文件及目录 unlink($file_path); rmdir("./tmp/".$dir_name."/".$ymd); rmdir("./tmp/".$dir_name); */ //完整的URL路径 $file_url = $urls . $save_url . $new_file_name; header('Content-type: text/html; charset=UTF-8'); $json = new Services_JSONs(); echo $json->encode(array('error' => 0, 'url' => $file_url));
/** * 按照目录上传文件 * * @param OssClient $ossClient OssClient * @param string $bucket 存储空间名称 * */ function uploadDir($ossClient, $bucket) { $localDirectory = "."; $prefix = "samples/codes"; try { $ossClient->uploadDir($bucket, $prefix, $localDirectory); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } printf(__FUNCTION__ . ": completeMultipartUpload OK\n"); }
public function setUp() { $this->bucket = Common::getBucketName(); $this->ossClient = Common::getOssClient(); $this->ossClient->createBucket($this->bucket); }
<?php header("Content-type: text/html; charset=utf-8"); header('Access-Control-Allow-Origin:*'); require_once '/aliyun-oss-php-sdk-master/autoload.php'; use OSS\OssClient; use OSS\Core\OssException; $accessKeyId = "7LdVru52GybHb1DB"; $accessKeySecret = "zWrGBwmcgWxgBtdrGlPpEfyacRmuAd"; $endpoint = "oss-cn-shanghai.aliyuncs.com"; $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->setTimeout(3600); $ossClient->setConnectTimeout(5); function create_guid() { $charid = strtoupper(md5(uniqid(mt_rand(), true))); $uuid = substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4); return $uuid; } function WriteLog($info) { $file = 'F:\\wampserver\\setup\\wamp\\www\\uploadmedid.txt'; file_put_contents($file, $info, FILE_APPEND); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }
/** * 生成PutObject的签名url,主要用于私有权限下的写访问控制, 用户可以利用生成的signedUrl * 从文件上传文件 * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @throws OssException */ function getSignedUrlForPuttingObjectFromFile($ossClient, $bucket) { $file = __FILE__; $object = "test/test-signature-test-upload-and-download.txt"; $timeout = 3600; $options = array('Content-Type' => 'txt'); try { $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print __FUNCTION__ . ": signedUrl: " . $signedUrl . "\n"; $request = new RequestCore($signedUrl); $request->set_method('PUT'); $request->add_header('Content-Type', 'txt'); $request->set_read_file($file); $request->set_read_stream_size(filesize($file)); $request->send_request(); $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); if ($res->isOK()) { print __FUNCTION__ . ": OK" . "\n"; } else { print __FUNCTION__ . ": FAILED" . "\n"; } }