2016-10-18 9 views
0

私はFMFlinderBundle v.5(何らかの理由で最新のバージョンを使用できません)をSymfony 2.8.12で使用しています。私は大きなファイル(最大20MB)をアップロードすることができるようになるまで、ドキュメントをたどり、うまくいきました。 upload_max_sizeパラメータを20Mに変更しました。これは問題ありませんでしたが、アップロード中にファイルが2MBのチャンクに分割され、elfinderがtempディレクトリに保存しようとしました。問題は、そこにアクセスできないということです。仮想ホスト定義からの設定は読み込まれず、常にシステムの一時フォルダが使用されます。FMElfinderBundle 5 - アップロード時に一時フォルダを設定する方法

私は、elfinder temp dir-upload_temp_pathcommon_temp_pathの設定に2つのパラメータを使用できることを発見しました。しかし、私はそれらを設定すると運がなかった。私はPHPStormコンソールコマンドのキャッシュを実行する度に:clear --no-warmup私はInvalidConfigurationExceptionを取得します。

私は、fm_elfinderキーの下でconfig構造体のどこかにパラメータを入れようとしましたが、同じ例外があります。

これはconfig.ymlの私の設定です:


    fm_elfinder: 
     instances: 
      default: 
       locale: %locale% 
       editor: ckeditor 
       fullscreen: true 
       theme: smoothness 
       include_assets: true 
       relative_path: false 
       connector: 
        roots: 
         uploads: 
          driver: LocalFileSystem 
          path: uploads 
          upload_max_size: 20M 

誰もが一時ディレクトリを設定する方法を、私を助けることができますしてください?

答えて

0

私は解決策を見つけました。独自のカスタム構成リーダーを作成し、元の構成リーダーと置き換える必要があります。コンフィグレーションクラスは、ElFinderConfigurationProviderInterfaceを実装する必要があります。詳細については、https://github.com/helios-ag/FMElfinderBundle/blob/master/Resources/doc/advanced-configuration.md#custom-configuration-provider][1]を参照してください。

+0

あなたはElfinderConfiguratorクラスのためのあなたの結果を共有することを気にしてもらえますか?私はそれによって返された有効なオプションを持っているために苦労しています。ありがとうございます – Overdose

+0

円滑に動作 - 私は別の答えにいくつかのデータを入れます。ありがとう。 – Trasher

1

[OK]を、いくつかの詳細情報:

私はElFinderバンドルからElFinderConfigurationReaderを取り、名前ElFinderConfigurationCustomReaderの下で私のプロジェクトにそれを救いました。そして、この私がサービスとして定義されたクラス:

service.custom_fm_elfinder.configurator: 
    class: CSBN\SVJBundle\Component\ElFinder\ElFinderConfigurationCustomReader 
    arguments: ['%fm_elfinder%', '@request_stack', '@service_container', '%elfinder_temporary_path%'] 

変数elfinder_temporary_pathはparameters.ymlに設定されています。

$options['uploadTempPath'] = $this->temporaryPath; 

サービスから取得されます:

fm_elfinder: 
configuration_provider: service.custom_fm_elfinder.configurator 

そして、私の新しく作成されたファイルのElFinderConfigurationCustomReaderで

は私だけの方法でgetConfiguration 1行を追加しました:config.ymlで

は、私は自分の構成リーダーを設定しますコンストラクタのパラメータ

希望すると、これが役立ちます。

編集:フル機能のコピー:

/** 
* @param $instance 
* 
* @return array 
*/ 
public function getConfiguration($instance) 
{ 
    $request    = $this->requestStack->getCurrentRequest(); 
    $efParameters   = $this->parameters; 
    $parameters    = $efParameters['instances'][$instance]; 
    $options    = array(); 
    $options['corsSupport'] = $parameters['cors_support']; 
    $options['debug']  = $parameters['connector']['debug']; 
    $options['bind']  = $parameters['connector']['binds']; 
    $options['plugins']  = $parameters['connector']['plugins']; 
    $options['uploadTempPath'] = $this->temporaryPath; 
    $options['roots']  = array(); 

    foreach ($parameters['connector']['roots'] as $parameter) { 
     $path  = $parameter['path']; 
     $homeFolder = $request->attributes->get('homeFolder'); 
     if ($homeFolder !== '') { 
      $homeFolder = '/'.$homeFolder.'/'; 
     } 

     $driver = $this->container->has($parameter['driver']) ? $this->container->get($parameter['driver']) : null; 

     $driverOptions = array(
      'driver'   => $parameter['driver'], 
      'service'   => $driver, 
      'glideURL'   => $parameter['glide_url'], 
      'glideKey'   => $parameter['glide_key'], 
      'plugin'   => $parameter['plugins'], 
      'path'    => $path.$homeFolder, //removed slash for Flysystem compatibility 
      'startPath'   => $parameter['start_path'], 
      'URL'    => $this->getURL($parameter, $request, $homeFolder, $path), 
      'alias'    => $parameter['alias'], 
      'mimeDetect'  => $parameter['mime_detect'], 
      'mimefile'   => $parameter['mimefile'], 
      'imgLib'   => $parameter['img_lib'], 
      'tmbPath'   => $parameter['tmb_path'], 
      'tmbPathMode'  => $parameter['tmb_path_mode'], 
      'tmbUrl'   => $parameter['tmb_url'], 
      'tmbSize'   => $parameter['tmb_size'], 
      'tmbCrop'   => $parameter['tmb_crop'], 
      'tmbBgColor'  => $parameter['tmb_bg_color'], 
      'copyOverwrite'  => $parameter['copy_overwrite'], 
      'copyJoin'   => $parameter['copy_join'], 
      'copyFrom'   => $parameter['copy_from'], 
      'copyTo'   => $parameter['copy_to'], 
      'uploadOverwrite' => $parameter['upload_overwrite'], 
      'uploadAllow'  => $parameter['upload_allow'], 
      'uploadDeny'  => $parameter['upload_deny'], 
      'uploadMaxSize'  => $parameter['upload_max_size'], 
      'defaults'   => $parameter['defaults'], 
      'attributes'  => $parameter['attributes'], 
      'acceptedName'  => $parameter['accepted_name'], 
      'disabled'   => $parameter['disabled_commands'], 
      'treeDeep'   => $parameter['tree_deep'], 
      'checkSubfolders' => $parameter['check_subfolders'], 
      'separator'   => $parameter['separator'], 
      'timeFormat'  => $parameter['time_format'], 
      'archiveMimes'  => $parameter['archive_mimes'], 
      'archivers'   => $parameter['archivers'], 
     ); 

     if ($parameter['volume_id'] > 0) { 
      $driverOptions['id'] = $parameter['volume_id']; 
     } 

     if (!$parameter['show_hidden']) { 
      $driverOptions['accessControl'] = array($this, 'access'); 
     }; 

     $options['roots'][] = array_merge($driverOptions, $this->configureDriver($parameter)); 
    } 

    return $options; 
} 
+0

それは私を悩ますElFinderConfigurationCustomReaderです:あなたは 'public function getConfiguration($ instance){$ options ['uploadTempPath'] = $ this-> temporaryPath; ... $オプションを返す;} '? getConfiguration()メソッド全体を置くことができますか?再度ありがとう – Overdose

+0

が前の投稿に追加されました – Trasher

+0

ありがとうございます。ただ最後のこと。あなたの '$ this-> getURL($ parameter、$ request、$ homeFolder、$ path)、'のようなメソッドは何ですか:どのようにあなたのURLを構築しますか?また '$ this-> configureDriver($ parameter)'私の問題は私の画像が表示されないことです。ちょうどelfinderのアイコンです。彼らは存在し、正しくアップロードされますが、挿入することはできません。私はこれがURL /パスの問題だと思う。だからこそ私は働く解決策を求めている。申し訳ありませんが、私はあなたのトピックを汚染する: '( – Overdose

関連する問題