Home / PostsPost
如何在 Symfony2 中使用阿里云OSS SDK
嘟噜聪2015/01/27 15:13:24 4933人已阅
简介 这里介绍是一种非常简单方便的方案,只需要修改一个composer.json文件 然后执行一条命令就完成了,目前我将会在windows的DOS环境下演示。
这里介绍是一种非常简单方便的方案,只需要修改一个composer.json文件 然后执行一条命令就完成了,目前我将会在windows的DOS环境下演示。
关于composer的使用我这就不多作介绍了,网上有很多资料,等我把网站建设完后,有时间我会单独写一些关于composer的相关知识。
好吧,我们开始
首先咱们要去阿里云下载OSS的SDK包。
/demo 目录里有一个官方提供的一个小例子,可以参考参考(说实话,阿里提供的文档真少)。
/docs 目录是空的我也不晓得里边有啥。
/lang 语言包
/lib 扩展包
/logs 日志目录
/services 空的
/util 这里边有个文件获取文件类型的
config.inc.php 配制文件
sdk.class.php 这个才是真身,只要引入这个就行了
其实真正有用的目录就4个
好了咱们把以上这4个目录及两个文件放到 /项目目录/app/lib/AliyunOSS 目录下,没有的话就创建(注意不是在/web/目录下)
放进去后 几位修改 /项目目录/composer.json 文件
{ "autoload": { "psr-0": { "": "src/" }, /** 在这里加上 classmap参数 然后指定路径 */ "classmap": [ "app/lib/AliyunOSS/sdk.class.php" ] }, }在autoload这个参数下另上 classmap 这个参数 然后指定路径,也就是刚刚咱们放SDK的那个目录。
打开DOS窗口 进入到 /项目目录/ 执行命令
composer dump-autoload执行成功后打开 /项目目录/vendor/composer/autoload_classmap.php
<?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( 'ALIOSS' => $baseDir . '/app/lib/AliyunOSS/sdk.class.php', 'Collator' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Collator.php', 'IntlDateFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/IntlDateFormatter.php', 'Locale' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Locale.php', 'NumberFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/NumberFormatter.php', 'OSS_Exception' => $baseDir . '/app/lib/AliyunOSS/sdk.class.php', 'SessionHandlerInterface' => $vendorDir . '/symfony/symfony/src/Symfony/Component/HttpFoundation/Resources/stubs/SessionHandlerInterface.php', 'SqlFormatter' => $vendorDir . '/jdorn/sql-formatter/lib/SqlFormatter.php', );应该多了一行
'ALIOSS' => $baseDir . '/app/lib/AliyunOSS/sdk.class.php',
这时就表示成功了,可以在控制器里加载了
<?php namespace Demo\AdminBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\File; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Exception\IOExceptionInterface; use ALIOSS; class ImageController extends Controller{ /** * 上传图片 * @Route("/uploadImage") * @param Request $request * @return JsonResponse */ public function uploadImageAction( Request $request ) { $fileUrl = 'http://uploads.lattecake.com/images/life/'; if( $request->files ) { /* $OSS_access_id = $this->container->getParameter('OSS_access_id'); $OSS_access_key = $this->container->getParameter('OSS_access_key');*/ $dir = './uploads/images/life/'.date('Y/m/'); foreach ($request->files as $file) { $name = md5( $file->getClientOriginalName(). microtime() ).'.'.$file->guessExtension(); $fileUrl = $fileUrl.date('Y/m/').$name; $fs = new Filesystem(); if( !$fs->exists( $dir ) ) { try { $fs->mkdir( $dir ); } catch (IOExceptionInterface $e) { echo "An error occurred while creating your directory at ".$e->getPath(); } } $file->move( $dir, $name ); /*$oss_sdk_service = new ALIOSS($OSS_access_id, $OSS_access_key); //设置是否打开curl调试模式 $oss_sdk_service->set_debug_mode(TRUE); $bucket = 'lattecake'; $options = array( ALIOSS::OSS_CONTENT_TYPE => 'text/xml' ); //print_r($oss_sdk_service->get_bucket_acl($bucket, $options));die; $object = 'netbeans-7.1.2-ml-cpp-linux.sh'; $file_path = $dir.$name; $response = $oss_sdk_service->upload_file_by_file($bucket, $name, $file_path); echo '|-----------------------Start---------------------------------------------------------------------------------------------------'."\n"; echo '|-Status:' . $response->status . "\n"; echo '|-Body:' ."\n"; echo $response->body . "\n"; echo "|-Header:\n"; print_r ( $response->header ); echo '-----------------------End-----------------------------------------------------------------------------------------------------'."\n\n"; die;*/ break; } } $response = [ 'error' => 0, 'url' => $fileUrl ]; return new JsonResponse($response); } }然后这样就可以使用 阿里云的 OSS了
OSS_access_id 与 OSS_access_key 放在常量里面,等有时间我再写 symfony2常量要怎么配制吧。
部分代码我删除掉了,大家都懂的...
原创,需要转载,请注明出处,谢谢合作
很赞哦! (1)
上一篇:基本的HTML模板
文章评论
点击排行
本栏推荐
标签
站点信息
- 微信公众号