2017-04-07 9 views
0

イメージのアップロードに問題があります。このエラーが表示されます。yii 2アップロードファイルがストリームを開けませんでした:そのようなファイルまたはディレクトリがありません

move_uploaded_file(C:\AppServ\www\testyii\basic/uploadedfiles/1.jpg): failed to open stream: No such file or directory

本書によれば、このコードを追加しました。基本的なディレクトリに基本的な/設定/ web.phpで$コンフィグアレイと作成したフォルダのuploadFilesで

'aliases' => 
[ 
'@uploadedfilesdir' => '@app/uploadedfiles' 
], 

これはこれはCONTROLLER

<?php 


namespace app\controllers; 

use Yii; 
use yii\web\Controller; 
use app\models\Room; 
use yii\web\UploadedFile; 

class RoomsController extends Controller 
{ 
    public function actionCreate() 
    { 
     $model=new Room(); 
     $modelCanSave=false; 

     if ($model->load(Yii::$app->request->post())&&$model->validate()) 
     { 
      $model->fileImage = 
UploadedFile::getInstance($model,'fileImage'); 


      if($model->fileImage){ 

       $model->fileImage->saveAs(Yii::getAlias('@uploadedfilesdir/' 
.$model->fileImage->baseName. '.' . $model->fileImage->extension)); 

       //$model->fileImage- 
>saveAs(Yii::getAlias('@uploadedfilesdir/' . $model->fileImage->baseName. 
'.' . 
$model->fileImage->extension)); 
       //$model->fileImage->saveAs('@uploadFiles/' . $model- 
>fileImage->baseName. '.' . $model->fileImage->extension); 

       } 
      $modelCanSave=true; 
     } 

     return $this->render('create', 
['model'=>$model,'modelCanSave'=>$modelCanSave]); 

    } 
} 
?> 

あるMODEL

<?php 
namespace app\models; 

use yii\base\Model; 

class Room extends Model 
{ 
    public $floor; 
    public $room_number; 
    public $has_condition; 
    public $has_tv; 
    public $has_phone; 
    public $available_from; 
    public $price_per_day; 
    public $description; 

    public $fileImage; 

    public function rules() 
    { 
     return [ 
      ['floor','integer','min'=>0], 
      ['room_number','integer','min'=>0], 

     [['has_condition','has_tv','has_phone'],'integer','min'=>0,'max'=>1], 
      ['available_from','date','format'=>'php:Y-m-d'], 
      ['price_per_day','number','min'=>0], 
      ['description','string','max'=>500], 

      ['fileImage','file'] 
     ]; 
    } 

    public function attributeLabels() 
    { 
      return [ 
      'floor' => 'Floor', 
      'room_number' => 'Room number', 
      'has_condition' => 'Condition available', 
      'has_tv' => 'TV available', 
      'has_phone' => 'Phone available', 
      'available_from' => 'Available from', 
      'price_per_day' => 'Price (EUR/day)', 
      'description' => 'Description', 
      'fileImage' =>'Image', 
      ]; 
    } 


} 
?> 

ですVIEW

<?php 

use yii\helpers\Html; 
use yii\helpers\Url; 
use yii\helpers\ArrayHelper; 
use yii\widgets\ActiveForm; 
?> 

<?php if($modelCanSave) { ?> 
<div class="alert alert-success"> 
Model ready to be Saved!! 
</div> 
<?php } ?> 

<?php $form=ActiveForm::begin();?> 
<div class="row"> 
<div class="col-lg-12"> 
<h1>Room form</h1> 
<?= $form->field($model,'floor')->textInput()?> 
<?= $form->field($model,'room_number')->textInput()?> 
<?= $form->field($model, 'has_condition')->checkbox() ?> 
<?= $form->field($model, 'has_tv')->checkbox() ?> 
<?= $form->field($model, 'has_phone')->checkbox() ?> 
<?= $form->field($model, 'available_from')->textInput() ?> 
<?= $form->field($model, 'price_per_day')->textInput() ?> 
<?= $form->field($model, 'description')->textarea() ?> 

<?= $form->field($model, 'fileImage')->fileInput()?> 
</div> 
</div> 
<div class="form-group"> 
<?=Html::submitButton('Create',['class'=>'btn btn-success'])?> 
</div> 

<?php ActiveForm::end();?> 

<?php if($modelCanSave) { ?> 
<div class="alert alert-success"> 
Model ready to be saved! 
<br /><br /> 
These are values: <br /> 
Floor: <?php echo $model->floor; ?> <br /> 
Room Number: <?php echo $model->room_number; ?> <br /> 
Has conditioner: <?php echo Yii::$app->formatter->asBoolean($model- 
>has_condition); ?> <br /> 
Has TV: <?php echo Yii::$app->formatter->asBoolean($model->has_tv); ?> <br/> 
Has phone: <?php echo Yii::$app->formatter->asBoolean($model->has_phone); ?> 
<br /> 
Available from (mm/dd/yyyy): <?php echo Yii::$app->formatter->asDate($model- 
>available_from,'php:m/d/Y'); ?> <br /> 
Price per day: <?php echo Yii::$app->formatter->asCurrency($model- 
>price_per_day,'EUR'); ?> <br /> 
Image:<?php if(isset($model->fileImage)) { ?> <img src="<?php echo 
Url::to('@uploadedfiledir/'.$model->fileImage->name)?>"/> 
<?php } ?> 
</div> 
<?php } ?> 

作成ボタンをクリックすると、このように表示されます。 move_uploaded_file(C:\ AppServ \ www \ testyii \ basic/uploadedfiles/1.jpg):ストリームを開けませんでした。このようなファイルやディレクトリはありません。

この問題を解決してください。 ありがとうございます。

+0

アップロードディレクトリには書き込みを許可するファイルのアクセス権があることを確認してください。 –

答えて

0

設定した別名フォルダ名が異なります。基本的なディレクトリ

における基本的な/設定/ web.phpで

'aliases' => 
[ 
'@uploadedfilesdir' => '@app/uploadedfiles' 
], 

$のconfig配列し、作成したフォルダuploadFilesだから、あなたは以下のように、あなたの別名を更新する必要があります。

'aliases' => 
[ 
'@uploadedfilesdir' => Yii::getAlias('@app').'/uploadFiles' 
], 
+0

あなたのアドバイスに従って変更しましたが、それでも動作せず、この "無効なパスエイリアス:@ uploadedfiledir/004.jpg"のようなエラーの無効なパスが表示されます。 – Tman

+0

私は答えを修正しました。新しいコードでコードを更新してください。 –

+0

更新後に変更した後は、このようなエラーです。致命的なエラー:メッセージでキャッチされない例外 'のYii \ベースの\ InvalidParamException' '無効なパスの別名:@app':\ APPSERV \ WWW \ testyii基本的な\ベンダ\ \ yiisoft \ yii2 \ BaseYii.php:152スタックトレース:#0 Cでyii \ BaseYii :: getAlias( '@ app')#1 C:¥AppServ¥www¥testyii¥basic¥web¥index.php(C:¥AppServ¥www¥testyii¥basic¥config¥web.php (10):必要とする( 'C:\\ APPSERV \\ WWW \\ ...')#2 {メイン} Cでスロー:\ APPSERV \ WWW \ testyii基本\ベンダ\ yiisoft \ yii2 \ BaseYii.phpの\ライン152 – Tman

関連する問題