【问题标题】:How to get full path of the uploaded file in codeigniter?如何在codeigniter中获取上传文件的完整路径?
【发布时间】:2012-10-31 06:34:26
【问题描述】:

我正在使用codeIgniter 文件上传类示例https://www.codeigniter.com/user_guide/libraries/file_uploading.html 来上传文件。在我上传文件后的示例中,它将在上传成功视图页面中显示如下详细信息。

 Array
(
[upload_data] => Array
    (
        [file_name] => VenkataKrishna10.pdf
        [file_type] => application/pdf
        [file_path] => C:/xampp/htdocs/upload/application/
        [full_path] => C:/xampp/htdocs/upload/application/VenkataKrishna10.pdf
        [raw_name] => VenkataKrishna10
        [orig_name] => VenkataKrishna.pdf
        [client_name] => VenkataKrishna.pdf
        [file_ext] => .pdf
        [file_size] => 83.27
        [is_image] => 
        [image_width] => 
        [image_height] => 
        [image_type] => 
        [image_size_str] => 
    )

 )

之后我尝试以数组格式查看整个上传的数据。我的问题是如何从上面的数组中获取完整的文件路径。我知道有一个变量full_path,但我无法得到它。请帮帮我。

【问题讨论】:

  • 你试过$array['upload_data']['full_path']吗?
  • 我试过这个也给出错误 A PHP Error was seen 严重性:Notice Message: Undefined variable: array Filename: controllers/upload.php Line Number: 34
  • 从控制器尝试$data['upload_data']['full_path'],从视图中尝试$upload_data['full_path']
  • 不,它给出了错误............说明没有索引
  • 感谢air4x ........你可以写一个回答我会接受......

标签: php codeigniter


【解决方案1】:

从你的控制器使用

echo $data['upload_data']['full_path'];

从你的角度来看,使用

echo $upload_data['full_path'];

【讨论】:

  • 嘿,我还有一个疑问,我需要将此文件作为邮件附件发送,因为我需要在 $this->email->attach() 中添加此文件路径;我该怎么写.......
  • 如果您发送电子邮件的代码在控制器中,请使用 $data['upload_data']['full_path']。如果您的电子邮件发送代码在那里,则将其作为参数传递给您的模型方法。
【解决方案2】:

试试这样:

         if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());

        }
        else
        {
            $data = $this->upload->data();
                    // $data will contain full inforation
                    echo "Full path is:". $data['full_path'];

        }

【讨论】:

  • 错误的答案我不能投票太幸运了..答案是 $data['upload_data']['full_path']
  • 这取决于您如何存储上传的数据。如果您只是简单地存储: $data = $this->upload->data();然后通过 $data['full_path']; 访问它否则,如果您要存储 $data = array('upload_data' => $this->upload->data());然后通过 $data['upload_data']['full_path'] 访问它。这是简单的数组工作。
  • 嘿,我还有一个疑问,我需要将此文件作为邮件附件发送,因为我需要在 $this->email->attach() 中添加此文件路径;我该怎么写.......
【解决方案3】:

从你的帖子中,我假设你已经从 print_r 给出了一些变量的输出,比如$file_detail

如果你想从$file_detail获取full_path,你必须使用

$file_detail['upload_data']['full_path']

【讨论】:

    【解决方案4】:

    上传成功返回数组,只需要获取索引键即可:

    控制器:

    if ( ! $this->upload->do_upload())
    {
         $data['error'] = $this->upload->display_errors();
    }
    else
    {
       $data['upload_data'] = $this->upload_data();
    }
    $this->load->view('myview', $data);
    

    myview.php

    <p>Full path: <?php echo $upload_data['full_path'];?></p>
    

    【讨论】:

    • 我想在控制器和 $data['full_path']; 中使用它这是我遇到的错误 遇到 PHP 错误 严重性:通知消息:未定义索引:full_path 文件名:controllers/upload.php 行号:34
    • 您确定上传成功了吗?您要在哪里获取索引?您能否发布您的实际代码(不是在 cmets 中,不过,只需编辑您的问题)?
    【解决方案5】:

    如果您想在插入数据库后从上传中删除文件,您可以使用 unlink($filename) 从上传中删除文件

    【讨论】:

    • 这似乎无法回答发帖者的问题。他们在询问如何从 files 数组中获取完整路径;不是如何删除文件。
    猜你喜欢
    • 2016-03-13
    • 2014-05-10
    • 2011-04-17
    • 2013-11-24
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多