Php Codeigniter&;HTML5-尝试一次上载多个图像
视图看起来像这样Php Codeigniter&;HTML5-尝试一次上载多个图像,php,codeigniter,file-upload,codeigniter-2,Php,Codeigniter,File Upload,Codeigniter 2,视图看起来像这样 <?=form_open_multipart('upload/process');?> <input type="file" multiple="multiple" name="userfile[]" id="userfile" /> <?=form_submit('upload', 'Upload');?> <?=form_close();?> 我也遇到了这个问题。$\u文件数据以不同的
<?=form_open_multipart('upload/process');?>
<input type="file" multiple="multiple" name="userfile[]" id="userfile" />
<?=form_submit('upload', 'Upload');?>
<?=form_close();?>
我也遇到了这个问题。
$\u文件
数据以不同的结构发送(由于multiple=”“
属性),因此codeigniter无法处理它。在上载过程之前预编此文件:
$arr_files = @$_FILES['userfile'];
$_FILES = array();
foreach(array_keys($arr_files['name']) as $h)
$_FILES["file_{$h}"] = array( 'name' => $arr_files['name'][$h],
'type' => $arr_files['type'][$h],
'tmp_name' => $arr_files['tmp_name'][$h],
'error' => $arr_files['error'][$h],
'size' => $arr_files['size'][$h]);
然后在循环函数中使用以下命令:
$this->load->library('upload');
$arr_config = array( 'allowed_types' => 'gif|jpg|png',
'upload_path' => 'url_path/');
foreach(array_keys($_FILES) as $h) {
// Initiate config on upload library etc.
$this->upload->initialize($arr_config);
if ($this->upload->do_upload($h)) {
$arr_file_data = $this->upload->data();
}
}
说明:我只需将
$\u文件的结构
更改为在默认
上发送的公共结构,然后运行循环,获取它们的所有键名。您需要的循环:
for($i=0; $i<count($_FILES['name']); $i++){
if ($_FILES['error'][$i] == 0) {
//do your stuff here, each image is at $_FILES['tmp_name'][$i]
}
}
对于($i=0;$i请签出该类以进行多文件上载
这对我来说是个好办法。那么你有什么问题?我想使用codeigniter构建一个基本的多图像上传程序,而不涉及任何javascript。我的意思是,到底是什么问题,你尝试了什么,等等……但是,好吧,我给你写了你需要的循环。看看你是否可以从那里解决。我如何获得var_dump()在我处理之前上传的数据上,您需要有关$_文件数据或使用Codeigniter上传时创建的数据的信息?有关数据的问题已解决。现在我只想使用循环从数组中提取信息。(更新中提供)我不能确切地说出你想要什么。我已经更新了最后一段代码,希望能让它更清楚。在上传之前,你仍然需要更改$\u文件
数组的结构。CI库/帮助程序是原始php,但我明白你的意思,有时候插入自己的代码比查看CI文件更容易、更快看看他们以什么方式完成了一个特定的功能。+1是的,CI的文件上传类需要扩展/改进,以实现更广泛的功能……但对于最基本的用途来说,它做得很好。
for($i=0; $i<count($_FILES['name']); $i++){
if ($_FILES['error'][$i] == 0) {
//do your stuff here, each image is at $_FILES['tmp_name'][$i]
}
}