0

これは私が数週間前に取り組んでいたことでしたが、ビュー ファイルの画像にいくつかの変更を加えた後、アセット/アップロード フォルダーに保存されなくなりました。エラーが何度も返ってきます - アップロードするファイルが選択されていません。これは、パスが確実に正しいことを確認したにもかかわらずです。ここで何が間違っていますか?

これが私のコントローラーです:

<?php
class HomeProfile extends CI_Controller 
{


function HomeProfile()
{
parent::__construct();
$this->load->model("profiles");
$this->load->model("profileimages");
$this->load->helper(array('form', 'url'));
 }



 function upload()
      {
    $config['path'] = './web-project-jb/assets/uploads/';
    $config['allowed_types'] = 'gif|jpg|jpeg|png';
    $config['max_size'] = '10000';
    $config['max_width'] = '1024';
    $config['max_height'] = '768';

    $this->load->library('upload', $config);
    $img = $this->session->userdata('img');
        $username = $this->session->userdata('username');
    $this->profileimages->putProfileImage($username, $this->input->post("profileimage"));
//fail show upload form
    if (! $this->upload->do_upload())
{

    $error = array('error'=>$this->upload->display_errors());

    $username = $this->session->userdata('username');


    $viewData['username'] = $username;
    $viewData['profileText'] = $this->profiles->getProfileText($username);

    $this->load->view('shared/header');
    $this->load->view('homeprofile/homeprofiletitle', $viewData);
    $this->load->view('shared/nav');
    $this->load->view('homeprofile/upload_fail', $error);
    $this->load->view('homeprofile/homeprofileview', $viewData, array('error' => ' ' ));
    $this->load->view('shared/footer');

    //redirect('homeprofile/index');

}

else
{
    //successful upload so save to database


    $file_data = $this->upload->data();


    $data['img'] = base_url().'./web-project-jb/assets/uploads/'.$file_data['file_name'];
    // you may want to delete the image from the server after saving it to db
    // check to make sure $data['full_path'] is a valid path
    // get upload_sucess.php from link above
    //$image = chunk_split( base64_encode( file_get_contents( $data['file_name'] ) ) );



    $this->username = $this->session->userdata('username');

    $data['profileimages'] = $this->profileimages->getProfileImage($username);


    $viewData['username'] = $username;
    $viewData['profileText'] = $this->profiles->getProfileText($username);

    $username = $this->session->userdata('username');


}

    }



  function index()
  {

$username = $this->session->userdata('username');

$data['profileimages'] = $this->profileimages->getProfileImage($username);

$viewData['username'] = $username;
$viewData['profileText'] = $this->profiles->getProfileText($username);

$this->load->view('shared/header');
$this->load->view('homeprofile/homeprofiletitle', $viewData);
$this->load->view('shared/nav');
//$this->load->view('homeprofile/upload_form', $data);
$this->load->view('homeprofile/homeprofileview', $data, $viewData, array('error' => ' ' ) );
$this->load->view('shared/footer');
   }

   }

これが私の見解です:

<div id="maincontent">
<div id="primary"> 
<?//=$error;?>
 <?//=$img;?> 
 <h3><?="Profile Image"?></h3>
  <img src="<?php echo'$img'?>" width='300' height='300'/>
   <?=form_open_multipart('homeprofile/upload');?>
    <input type="file" name="img" value=""/>
    <?=form_submit('submit', 'upload')?>
    <?=form_close();?> 
    <?php if (isset($error)) echo $error;?>
  </div> 
</div>  

あなたの助けは大歓迎です

4

1 に答える 1

1

Codeigniter Upload クラスは、配列内のキーを探しているため、「アップロードするファイルが選択されていません」と表示されます。userfile$_FILES

ドキュメントから: http://codeigniter.com/user_guide/libraries/file_uploading.html

$this->upload->do_upload()

設定した設定に基づいてアップロードを実行します。注: デフォルトでは、アップロード ルーチンは、ファイルがuserfile... というフォーム フィールドから取得されることを想定しています。独自のフィールド名を設定する場合は、その値を do_upload 関数に渡すだけです。

$field_name = "some_field_name";
$this->upload->do_upload($field_name)

だからあなたには2つの選択肢があります、変更してください

<input type="file" name="img">

<input type="file" name="userfile">

...または変更

$this->upload->do_upload()

$this->upload->do_upload('img')
于 2012-11-21T03:18:31.253 に答える