Symfony MongoDb 用 FS 存储图片
来源:互联网 发布:算法小时代 电子书 编辑:程序博客网 时间:2024/06/18 18:43
Symfony MongoDb 用 FS 存储图片
使用Symfony
DBmanage引用GitHub
controllor(控制器)
public function saveBooksSubmitAction(Request $Request){ try { if ($Request->files->get("img_id")) { $UploadedFile = $Request->files->get("img_id"); $this->checkUploadedIsValid($UploadedFile); $new_book->setImgId($this->getUploadedImgId()); $new_book->create_time = new \MongoDate(); $new_book->save(); $this->addFlash("success", "成功图书入库。"); } else { throw new \ErrorException("您没有上传图片,请先上传图片!"); } } catch (\Exception $Exception) { $this->addFlash('error', $Exception->getMessage()); } return $this->redirectToRoute('library_list');}private function getUploadedImgId() { $FSManager = new FSManager(); return $FSManager->getPhotoGridFS()->storeUpload("img_id"); }private function checkUploadedIsValid($UploadedFile) { $file_type = $UploadedFile->getMimeType();//image/png,image/jpeg,image/gif if ($file_type != "image/jpeg" && $file_type != 'image/png' && $file_type != 'image/gif') { throw new \ErrorException("只能上传jpg gif png文件"); } }//通过id显示图片流public function showPictureAction($img_id){ $FSManager = new FSManager(); $collection = $FSManager->getPhotoGridFS(); $logo = $collection->findOne(array('_id' => new \MongoId($img_id))); // 以_id为索引取得文件 header('Content-type: image/jpg'); // 输出图片头 $pic = $logo->getBytes(); // 输出数据流 return new Response($pic);}
FSManager(图片处理类)
<?phpnamespace AppBundle\DBManager;use rayful\DB\Mongo\DBManager;class FSManager extends DBManager{ protected function collectionName() { return ''; } public function getPhotoGridFS() { return $this->getSpecifiedGridFS('photo'); } public function getAttachGridFS() { return $this->getSpecifiedGridFS('attach'); } public function getSpecifiedGridFS($fsName) { return self::db()->getGridFS($fsName); } }
使用原生的PHP
public function uploadImg() { $conn = new \MongoClient(); $db = $conn->test; $prefix = 'img'; $collection = $db->getGridFS($prefix); $file_size=$_FILES['book_img']['size']; if($file_size>200*1024) { throw new \ErrorException("文件过大,不能上传大于200kb的文件"); } $file_type=$_FILES['book_img']['type'];//image/png,image/jpeg,image/gif if($file_type !="image/jpeg" && $file_type!='image/png' && $file_type!='image/gif'){ throw new \ErrorException("只能上传jpg gif png文件"); } $book_img_id = $collection->storeUpload('book_img'); $book_img_id = strval($book_img_id ); return $book_img_id;// $logo = $collection->findOne(array('_id'=>$book_img_id)); // 以_id为索引取得文件// header('Content-type: image/png'); // 输出图片头// $pic= $logo ->getBytes(); // 输出数据流// return $pic; }
阅读全文
0 0
- Symfony MongoDb 用 FS 存储图片
- MongoDB GridFS图片存储
- MongoDB 存储图片
- java:mongodb存储、删除图片
- Symfony通过DoctrineMongoDBODM访问MongoDB
- 基于MongoDB GridFS的图片存储
- 基于MongoDB GridFS的图片存储
- MongoDB GridFS图片文件存储解决方案
- 基于MongoDB GridFS的图片存储
- 基于MongoDB GridFS的图片存储
- 利用mongodb实现分布式WEB图片存储
- PHP操作MongoDB 存储图片 文件
- mongodb存储图片和文件实践
- 用mongodb存储日志
- 用mongodb存储日志
- 用mongodb存储日志
- symfony
- symfony
- Tracking-Learning-Detection (TLD跟踪算法)
- odoo实施方法论
- 关于AVALON总线动态地址对齐
- Qt练习三-QQ登录界面遇到的中文乱码问题
- 音视频同步(播放)原理
- Symfony MongoDb 用 FS 存储图片
- 虚拟机CentOS7与主机时间同步
- csdn如何置顶博客
- 大型网站技术架构
- ARM交叉编译工具链
- HDU2604
- werkzeug实现简单Python web框架(3):添加动态路由
- 常见的HTTP状态码
- linux命令:将文件夹内的绝对路径写入txt文件