我正在创建一个上传视频文件的表单,但我有一个奇怪的错误。
我的表格是这样的:
<div style="color : red;"><?php echo $error;?></div>
<?php echo form_open_multipart('data_center/ajout_ressource/formulaire_video'); ?>
//various input text fields...
<input type="file" name="video">
<input type="submit" value="Ajouter cette ressource" />
</form>±
我上传的方法是(在内容中检查表单的其余部分是否正常):
$dir = './assets/video/';
$config['upload_path'] = $dir;
$config['allowed_types'] = 'avi|flv|wmv|mpeg|mp3|mp4';
$config['max_size'] = '102400';
$this->load->library('upload',$config);
if ( ! $this->upload->do_upload('video')){
$error = array('error' => $this->upload->display_errors());
$this->load->view('data_center/ajout_video', $error);
} else {
redirect('data_center/data_center/','refresh');
}
关于mime类型,我认为没关系:
'mp4' => 'video/mp4',
'wmv' => array('video/wmv', 'video/x-ms-wmv', 'flv-application/octet-stream', 'application/octet-stream'),
'flv' => array('video/flv', 'video/x-flv', 'flv-application/octet-stream', 'application/octet-stream'),
'avi' => 'video/x-msvideo',
当我尝试上传一个mp4文件时,它会自动重定向我(虽然我不确定它是重定向)到表单,未填充且没有错误消息,即使我在上传失败的情况下注释行也不加载视图再次显示或表格的其余部分是否不正确(不应尝试上传视频并加载预先填写的表格)。
例如,如果我输入了错误类型的文件,我可以看到错误消息(例如,'你试图上传的文件类型是不允许'),或者如果表单错误,我可以看到表单的错误。
最后,我必须补充一点,我修改了php.ini来授权这样的大文件,并且我用图片的形式(jpg,jpeg,png ...)做了几乎相同的事情,它完美地工作但是也将我重定向到了如果我尝试上传.mp4文件,则填写未填写的表格。
编辑:我刚刚下载了一个flv视频试试,它上传得很好,但是它的大小小于8mb(默认配置),而且一个40mb的flv文件和mp4文件有同样的问题,虽然我在php.ini中将配置更改为100mb
答案 0 :(得分:1)
有效地,您必须在PHP ini文件中更改两个参数
post_max_size = 100M
upload_max_filesize = 100M
但您可能还想更改apache滥用保护参数(100M)
LimitRequestBody 1073741824
另一方面,PHP每个脚本的时间限制也是30秒,所以你的脚本会在30秒的运行时死掉。
您可能还希望增加时间,以确保您的脚本不会因为上传,复制等而死亡,
set_time_limit(600); // 10 minutos execution