Codegniter - 无法打开流:HTTP包装器不支持可写连接

时间:2017-03-30 12:08:42

标签: php codeigniter codeigniter-2 image-uploading codeigniter-3

我在codegniter上传图片时遇到问题 这是我的观点:

<form method="post" action="<? echo site_url('do_upload'); ?>" id="createForm"  enctype="multipart/form-data" >
                        <div style="display:none">
                        <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash();?>" />
                        </div> 

                      <div class="form-group">
                        <label for="exampleInputFile">Picture</label>
                        <input type="file" name="picture" id="exampleInputFile">
                        <p class="help-block">Choose file to upluad.</p>
                      </div>


                  </div>
                  <div class="modal-footer">
                  <button type="submit" class="btn btn-primary">Save changes</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    </form>

我的控制员:

public function do_upload()
    {
            if(isset($_FILES['picture']))
            { 
                 $dossier = base_url().'assets/image/product/';
                 $fichier = basename($_FILES['picture']['name']);
                 if(move_uploaded_file($_FILES['picture']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                 {
                      echo 'Upload effectué avec succès !';
                 }
                 else //Sinon (la fonction renvoie FALSE).
                 {
                      echo 'Echec de l\'upload !';
                 }
            }
    }

我一直有这个问题:

Screen shot error

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

文件上传功能不支持HTTP&amp;基于https的文件路径。如果你使用基于linux的操作系统如ubuntu或mac给文件夹权限是777的所有文件夹为ex。资产,图像和产品这三个文件夹需要阅读&amp;写权限777

public function do_upload()
{
        if(isset($_FILES['picture']))
        { 
             $dossier ='./assets/image/product/'; //based folder path if is inside public so u can use $dossier = './public/assets/image/product/';
             $fichier = basename($_FILES['picture']['name']);
             if(move_uploaded_file($_FILES['picture']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
             {
                  echo 'Upload effectué avec succès !';
             }
             else //Sinon (la fonction renvoie FALSE).
             {
                  echo 'Echec de l\'upload !';
             }
        }
}