【发布时间】:2013-05-18 23:03:21
【问题描述】:
我正在创建一个表单来上传视频文件,但出现了一个奇怪的错误。
我的表格是这样的:
<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
【问题讨论】:
-
文件大小问题? vid 文件往往比图像大 MUCH,因此能够上传 .jpg 而不是 .mp4 对您的代码来说意义不大。您不能从 php 中更改 php 的文件上传限制,因为这样做的 php 代码只会在尝试上传并失败后触发 - 您需要确保 php.ini 限制设置得足够高以允许您的 .mp4 在第一名。
标签: php codeigniter video upload