Home >php教程 >php手册 >一个简单的图片文件上传服务with symfony2 component(不含验证)

一个简单的图片文件上传服务with symfony2 component(不含验证)

WBOY
WBOYOriginal
2016-06-06 19:35:001160browse

要用到Symfony2组件 symfony ?phpnamespace Admin\Bundle\ContentBundle\File;use Symfony\Component\DependencyInjection\ContainerInterface;use Symfony\Component\Filesystem\Filesystem;class SaveFileHandler{ protected $container; public function _

要用到Symfony2组件 symfony
<?php

namespace Admin\Bundle\ContentBundle\File;

use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Filesystem\Filesystem;

class SaveFileHandler
{
    protected $container;
    public function __construct( ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function save( $fileObject , $path)
    {

        $dir = $this->container->get('kernel')->getRootDir() . '/../web/' . $path;

        $sub_path = md5( $fileObject->getClientOriginalName() . microtime() );

        $dir .= '/' . $sub_path . '/';
        $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 = str_replace( 'image/' , mt_rand(1,99) .'.' , $fileObject->getMimeType() );

        $fileObject->move( $dir , $file );

        return '/'.$path.'/' . $sub_path . '/' . $file;
    }

    public function remove( $file)
    {
        $fs = new Filesystem();
        $full_path =  $this->container->get('kernel')->getRootDir() . '/../' . $file ;

        $full_path = preg_replace('/\/\d+\.\w+$/' , '' , $full_path);


        if( $fs->exists( $full_path) )
        {

            try {
                $fs->remove( $full_path );
            } catch (IOExceptionInterface $e) {
                echo "An error occurred while creating your directory at ".$e->getPath();
            }
        }

    }
}
services:
    file.save_file_handler:
        class: Admin\Bundle\ContentBundle\File\SaveFileHandler
        arguments: [@service_container]
<?php

//用法
public function doSomethingAction()
{
        
    $data = $form->getData();
    $image = $data->getImage();
    
    if( $old_image )
    {
        $this->get('file.save_file_handler')->remove( $tmp_image);
    }

    $newImageName = $this->get('file.save_file_handler')->save( $image , 'upload_dir' );
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn