首页 文章

在Codeigniter中上传.mov视频文件

提问于
浏览
1

我想在.mov文件扩展名上传视频文件,其他视频文件如mp4,flv正在工作但是当上传.mov时它不起作用 .

这是我的代码:

public function add_video(){
    if (isset($_FILES['video']['name']) && $_FILES['video']['name'] != '') {
        unset($config);
        $date = date("ymd");
        $configVideo['upload_path'] = './video';
        $configVideo['max_size'] = '9000000000';
        $configVideo['allowed_types'] = 'mov|avi|flv|wmv|mp3|mp4';
        $configVideo['overwrite'] = FALSE;
        $configVideo['remove_spaces'] = TRUE;
        $video_name = $date.$_FILES['video']['name'];
        $configVideo['file_name'] = $video_name;

        $this->load->library('upload', $configVideo);
        $this->upload->initialize($configVideo);
        if(!$this->upload->do_upload('video')) {
            echo $this->upload->display_errors();
        }else{
            $videoDetails = $this->upload->data();
            $data['video_name']= $configVideo['file_name'];
            $data['video_detail'] = $videoDetails;
            $this->load->view('/upload_video/show', $data);
        }

    }else{
        echo "Please select a file";
    }
  }

上传.mov视频后我收到的错误消息是这个
The filetype you are attempting to upload is not allowed. 是使用*登录允许类型修复问题,但这将允许用户上传所有扩展文件 .

注意:我正在使用Codeigniter 3.0.4

2 回答

  • 1

    File Uploading Class使用 application/config/mimes.php 中的配置将文件扩展名从allowed_types解析为实际的MIME类型

    我认为hapenning是你的.mov文件的MIME类型与video / quicktime不同 . 你可以在这里查看默认配置mimes.php

    What you need to do is to check the exact MIME type of your file and add it in the mimes.php .

    您可以使用mime_content_type来完成 .

    echo mime_content_type('filename.mov');
    

    然后只需在application / config / mimes.php中更改以下行

    'mov'   =>  'video/quicktime',
    

    通过添加一个或多个不同的MIME类型 . 我通过添加video / x-quicktime来解决同样的问题

    'mov'   =>  array('video/quicktime', 'video/x-quicktime'),
    

    此源Filext.com之后的一些可能的MIME类型是:video / quicktime,video / x-quicktime,image / mov,audio / aiff,audio / x-midi,audio / x-wav,video / avi

  • 4

    CodeIgniter检查文件内容以确保它实际上是预期的MIME类型 .

    首先,使用以下代码验证是否为您的文件检测到正确的MIME:

    // should be "video/quicktime"
    $mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $filepath);
    

    我假设你至少使用PHP 5.3 . 由于您可以上传其他文件类型,我假设上述代码可以正常工作而不会产生错误,否则您必须修复MIME检测(例如Apache“魔术文件”) .

    因此,通常 .mov 的唯一MIME是 video/quicktime ,但是如果你有其他东西,例如 video/hdmov ,你可以将它添加到 application/config/mimes.php

    // replace:
    'mov' => 'video/quicktime',
    // with:
    'mov' => array('video/quicktime', 'video/hdmov'),
    

    如果您得到一个空的结果,您的文件尚未被识别(或以某种方式被破坏),请尝试使用其他 .mov 文件来查看它们是否有效 .

    有关CodeIgniter如何尝试检测文件MIME的详细信息,请参阅Upload::_file_mime_type() .

相关问题