0

私がやろうとしていることは、これまでやったことのないことです。私は CakePHP を使用してフォームを作成しています。フォームヘルパーを使用してこれを行っています。これはすべて入力とテキストエリアで機能しますが、2 つの入力をファイル アップロード フィールドに変更しようとしています。

$this->data['Event']['img'] (フォームは call Event です) をデバッグすると、これは私が行った作業のようです。次の出力が得られます。

Array
 (
   [name] => logo.gif
   [type] => image/gif
   [tmp_name] => /tmp/phpaU3aBa
   [error] => 0
   [size] => 7318
 )

今、私はここでゲストしていますが、ファイルを「webroot」フォルダーに保存する必要があります。パスを作成しました /webroot/eventfiles/img & webroot/eventfiles/pdf - 今のところ画像だけから始めたので、動作させることができますが、アップロードする他のファイルの種類は pdf です。

これでCakePHPのウェブサイトを調べましたが、PHPサイトを見るように言っているだけで、これを行う方法はたくさんあるようですが、保存する方法がわかりません. 後でアクセスできるように、たとえば webroot フォルダに入って Cake から見えるようにします。

また、補足として、パスとファイル名をデータベースに保存する必要もあります。$this->data['Event']['img']['name'] を使用するだけで、データベースに保存されます。

助けてください?私はこれに何日も取り組んできました。ファイルのアップロードについて頭を悩ませているようには見えません。これを行う簡単な方法はありますか?たとえば、Cake as HTML & Form ヘルパーのように、アップロードされたファイルを簡単に保存する方法はありますか?

ご協力いただきありがとうございます。

グレン。

4

1 に答える 1

0

ただし、完全に機能する回答を投稿します。2 つのファイル入力ファイルから pdf および jpeg 画像を取得し、ユーザーが入力テキスト フィールドに指定したタイトルに名前を変更します。$newevent の 2 つの変数で、これらは他の入力と共に、データベース、パス、および名前が変更された画像に保存されるものです。

このコードは非常に単純です。このコードの本体は、このサイトの投稿からのもので、自分で使用するために変更したところです。

doc や png などのさまざまなファイル タイプを追加/アップロードしようとしている場合、アップロードするドキュメントのヘッダー タイプを知っておく必要があり、それを if ステートメントに追加します。

これが他の誰かを助けることを願っています!

グレン。

            $pathimg = "/eventfiles/img/";
            $pathpdf = "/eventfiles/pdf/";
            $dir_pdf = getcwd().$pathpdf;
            $dir_img = getcwd().$pathimg;
            $PDF_Path = $dir_pdf .  $this->data['Event']['pdf']["name"];
            $IMG_Path = $dir_img .  $this->data['Event']['img']["name"];
            $IMG_WithOutSpace = preg_replace('/\s+/', '_', $newevent['title']);
            $PDF_WithOutSpace = preg_replace('/\s+/', '_', $newevent['title']);

            $newevent['img'] = "/vh/eventfiles/img/" . $IMG_WithOutSpace . ".jpg";
            $newevent['pdf'] = "/vh/eventfiles/pdf/" . $PDF_WithOutSpace . ".pdf";

        if ((( $this->data['Event']['img']["type"] == "application/pdf") || ( $this->data['Event']['img']["type"] == "image/jpeg"))) {
          if (($this->data['Event']['img']["error"] > 0) || ($this->data['Event']['pdf']["error"] > 0)) {
            $this->Session->setFlash(__('An error has occured during updating. Please check all the fields.', true), 'default', array('class' => 'error-message'));
            $this->redirect($this->referer());
            exit();
          } else {

              move_uploaded_file( $this->data['Event']['img']["tmp_name"], $IMG_Path);
              rename($IMG_Path, $dir_img . $IMG_WithOutSpace. ".jpg");

              move_uploaded_file( $this->data['Event']['pdf']["tmp_name"], $PDF_Path);
              rename($PDF_Path, $dir_pdf . $PDF_WithOutSpace . ".pdf");

              $filename= $this->data['Event']['pdf']["name"];
              $filename= $this->data['Event']['img']["name"];
          } 
于 2012-08-13T07:56:33.943 に答える