在 Codeigniter 中上传 .mov 视频文件
Upload .mov video file in Codeigniter
我正在尝试上传 .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 视频后收到的错误消息是这样的
不允许您尝试上传的文件类型。
是的,使用 * 登录允许类型修复了该问题,但这将允许用户上传所有扩展文件。
注意:我使用的是 Codeigniter 3.0.4
CodeIgniter 检查文件内容以确保它实际上是预期的 MIME 类型。
首先,使用以下代码验证是否为您的文件检测到正确的 MIME:
// should be "video/quicktime"
$mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $filepath);
我假设您至少使用 PHP 5.3。由于您可以上传其他文件类型,我假设上面的代码可以正常工作而不会产生错误,否则您必须修复 MIME 检测(例如 Apache "magic file")。
所以,通常 .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()
。
File Uploading Class 使用 application/config/mimes.php
中的配置将文件扩展名从 allowed_types 解析为实际的 MIME 类型
我认为发生的事情是您的 .mov 文件的 MIME 类型与 video/quicktime 不同。您可以在此处查看默认配置 mimes.php
您需要做的是检查文件的确切 MIME 类型并将其添加到 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
我正在尝试上传 .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 视频后收到的错误消息是这样的
不允许您尝试上传的文件类型。
是的,使用 * 登录允许类型修复了该问题,但这将允许用户上传所有扩展文件。
注意:我使用的是 Codeigniter 3.0.4
CodeIgniter 检查文件内容以确保它实际上是预期的 MIME 类型。
首先,使用以下代码验证是否为您的文件检测到正确的 MIME:
// should be "video/quicktime"
$mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $filepath);
我假设您至少使用 PHP 5.3。由于您可以上传其他文件类型,我假设上面的代码可以正常工作而不会产生错误,否则您必须修复 MIME 检测(例如 Apache "magic file")。
所以,通常 .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()
。
File Uploading Class 使用 application/config/mimes.php
我认为发生的事情是您的 .mov 文件的 MIME 类型与 video/quicktime 不同。您可以在此处查看默认配置 mimes.php
您需要做的是检查文件的确切 MIME 类型并将其添加到 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