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

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

WBOY
Release: 2016-06-06 19:35:00
Original
1166 people have browsed it

要用到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();
            }
        }

    }
}
Copy after login
services:
    file.save_file_handler:
        class: Admin\Bundle\ContentBundle\File\SaveFileHandler
        arguments: [@service_container]
Copy after login
<?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' );
}
Copy after login
source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template