(CakePHP2.x) Folder APIとFile APIを使ってフォルダ、ファイルの操作をする

CakePHP

CakePHP

CakePHPでフォルダを作ろうとしたんですが

PHP関数のmkdirで作れなかったんです。

どうも、mkdir, mv, ls, cp, rmは非推奨になったようで

代わりにFolder APIとFile APIというものを使った方がいいようです。

スポンサードリンク

APIを使うためにクラスをロードします

コントローラーに記述

App::uses('Folder', 'Utility');
App::uses('File', 'Utility');

これでFolder APIとFile APIが使えるようになります。

使ったものはFolder APIでフォルダの作成と削除、移動と

File APIでファイルの削除です。

Folder APIでフォルダの作成と削除、移動

フォルダの作成

$dir = new Folder();    //インスタンスの作成
$dir->create('作成したいフォルダのパス');

※作成したいフォルダのパスは作成したいフォルダ名を含みます。

フォルダの移動

$dir = new Folder('移動させたいフォルダのパス');    //インスタンスの作成
$dir->create('移動先のフォルダのパス');

フォルダの削除

$dir = new Folder('削除させたいフォルダのパス');    //インスタンスの作成
$dir->delete();

File APIでファイルの削除

ファイルの削除

$file = new File('削除したいファイルのパス');   //インスタンスの作成
$file->delete();

あまり機能としては使っていないですが

簡単にフォルダやファイルの操作ができます。

他にも色々メソッドがあるので

必要になったら使ってみます。

Folder & File

CakePHP2 実践入門 (WEB DB PRESS plus)

新品価格
¥3,110から
(2015/1/27 23:08時点)

スポンサードリンク

2 Responses to “(CakePHP2.x) Folder APIとFile APIを使ってフォルダ、ファイルの操作をする”

  1. 松浦隆治 より:

    現在、cakePHPを勉強中で、当サイト、大変参考にさせて頂いております。
    1点、今、私が実現したい内容に近かったので、コメントさせて頂きます。

    私が、行いたい操作は以下になります。
    ——————————————-
    ①input fileで画像アップロード(test_dataフォルダへ)

    ②確認ページでOKをクリック

    ③★(test_dataフォルダ)→(dataフォルダ)へコピー

    ★部分で、fileAPIを使用したく、コントローラに記述しているのですが、
    どうも、記述にあやまりがあるらしく、コピーされません。

    ご質問
    ——————————————-
    1.
    App::uses(‘Folder’, ‘Utility’);
    App::uses(‘File’, ‘Utility’);
    は、コントローラファイルのclass前の記述(ファイル先頭)で問題ないでしょうか?

    2.
    ②でクリックされた際に、読まれるコントローラアクション内に、以下の記述で問題ないでしょうか?
    $file = new File(WWW_ROOT.’path/test_copy.txt’);
    $file->copy(WWW_ROOT.’path/test_copy_dest.txt’,true);

    3.
    上記のソース内で、画像をコピーする指定をしたいのですが、以下では間違いでしょうか?
    $file = new File(‘./img/test_data/shop01_basic_big.jpg’);
    $file->copy(‘./img/data/shop01_basic_big.jpg’,true);

    長々、大変失礼なのですが、
    何卒、ご教授の程、お願い致します。

    • tailtension より:

      >松浦さんへ

      コメントありがとうございます。
      少しでもお役に立ててうれしい限りです。

      ご質問にお答え致しますね。
      >1.
      >App::uses(‘Folder’, ‘Utility’);
      >App::uses(‘File’, ‘Utility’);
      >は、コントローラファイルのclass前の記述(ファイル先頭)で問題ないでしょうか?
      →こちらは、class前でなくても普通問題ないです。
      確か、Folder APIとFile APIはclassの前で読み込んだ場合
      うまく動かなかった気がします。
      すみません、うる覚えですが・・・
      僕はフォルダやファイルの操作を行うコントローラーのアクション内で読み込んでいます。

      >2.
      >②でクリックされた際に、読まれるコントローラアクション内に、以下の記述で問題ないでしょうか?
      >$file = new File(WWW_ROOT.’path/test_copy.txt’);
      >$file->copy(WWW_ROOT.’path/test_copy_dest.txt’,true);
      →②の動作で「path」フォルダ内のtest_copyファイルを
      test_copy_destという名前でコピーするというなら問題ないです。

      >3.
      >上記のソース内で、画像をコピーする指定をしたいのですが、以下では間違いでしょうか?
      >$file = new File(‘./img/test_data/shop01_basic_big.jpg’);
      >$file->copy(‘./img/data/shop01_basic_big.jpg’,true);
      →ファイルパスの記述が違うと思います。
      CakePHPはサーバー内の絶対パスを使うのが基本なので
      パスの書き方を変えてもらうといいです。

      とりあえず、これでやってみて下さい。
      それでもできない場合は、
      またコメント入れて頂ければと思います。

コメントを残す

サブコンテンツ

このページの先頭へ