【環境情報】
・baserCMSのバージョン:4.7.6
・レンタルサーバー名:xampp for windows 8.1.17(localhost)
・使用テーマ:bc_sample
・PHPスキル(自己評価):D
お世話になります。
管理者としてログインしている時、plug-in内で画像ファイルのアップロード機能を付けたいと思っています。
しかし、以下の方法で試してもアップロードは出来る(xamppのtmpフォルダ内にファイルは出来る)のですが、
move_uploded_file 命令がエラーになります。
(エラー内容 Failed to open stream: No such file or directory)
$path1の内容を色々変更してみたのですが上手くいきませんでした。
($path1= $this->Html->url(“/sample”,true) . “img/up_image/image1.jpg”)
($path1= “sample/img/up_image/image1.jpg”)
($path1=$this->webroot . “img/up_image/image1.jpg”) など。。
何が原因なのか、全く分かりません。
どなたかご指導、よろしくお願いいたします。
※追記
$path1= $this->params[‘form’][‘foo_file’][‘tmp_name’] . “.jpg”
とすると、tmpフォルダ内に~.tmp.jpgと言う名前でファイルが出来ました。
と言うことは、移動先のフォルダ名の取得ができていないという事だと思います。
app/plugin/sample/webrootのURLを指定するにはどうしたら良いのか。
よろしくお願いいたします。
フォルダ階層など、以下の通りです。
-------フォルダ構造------------------------------
プラグイン名 : sample
Sample
├ controller
│ └ Fileup1Controller
├ view
│ └ Fileup1s
│ └ admin
│ ├ index
│ └ index2
└ webroot
└ img
└ up_image
└ image1.jpg ←これを作りたい
--Fileup1Controller------------------
<?php
App::uses('AppController', 'Controller');
App::uses('Sanitize', 'Utility');
class Fileup1Controller extends BcPluginAppController {
// nameプロパティにコントローラー名を定義
public $name = 'Fileup1s';
public function admin_index2() {
sleep(5);
$path1= "sample/img/up_image/image1.jpg";
if (move_uploaded_file($this->params['form']['foo_file']['tmp_name'], $path1)){
echo "移動に成功しました。";
}else{
echo "移動に失敗しました。";
}
if (is_uploaded_file($this->params['form']['foo_file']['tmp_name'])) {
echo "ファイル ". $this->params['form']['foo_file']['tmp_name'] ." のアップロードに成功しました。\n";
} else {
echo "おそらく何らかの攻撃を受けました。";
echo "ファイル名 '". $this->params['form']['foo_file']['tmp_name'] . "'.";
}
}
public function admin_index() {
}
}
--index1----------------------
<form action="index2" enctype="multipart/form-data" method="post">
<input name="foo_file" type="file" value="">
<input type="submit" value="送信">
</form>
--index2----------------------
<h1>index2</h1>