【发布时间】:2015-10-31 05:57:48
【问题描述】:
我一直尝试在 codeigniter 项目中以一个表单两次上传多张照片,虽然照片上传正确,但照片名称未按预期返回。例如,如果我在第一个上传者中上传一张名为“a.jpg”的照片,在第二个上传者中上传一张名为“b.jpg”的照片,我得到的名字是“a.jpg,b.jpg”和“b.jpg,b” (1).jpg" 用于第二种情况。下面是附上的代码。
控制器:-
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Imageupload extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
function index()
{
$this->load->view('imageupload_view', array('error' => ' ' ));
}
function doupload()
{
$name_array = array();
$count = count($_FILES['userfile']['size']);
// echo $count;
foreach($_FILES as $key=>$value)
for($s=0; $s<=$count-1; $s++)
{
$_FILES['userfile']['name']=$value['name'][$s];
$_FILES['userfile']['type'] = $value['type'][$s];
$_FILES['userfile']['tmp_name'] = $value['tmp_name'][$s];
$_FILES['userfile']['error'] = $value['error'][$s];
$_FILES['userfile']['size'] = $value['size'][$s];
$config['upload_path'] = 'application/views/uploads';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '1000000';
//$config['max_width'] = '1024';
//$config['max_height'] = '768';
$this->load->library('upload', $config);
$this->upload->do_upload();
$data = $this->upload->data();
$name_array[] = $data['file_name'];
}
$names= implode(',', $name_array);
return $names;
}
function doupload_1()
{
$name_array = array();
$count = count($_FILES['file_1']['size']);
echo $count;
foreach($_FILES as $key=>$value)
for($s=0; $s<=$count-1; $s++)
{
$_FILES['file_1']['name']=$value['name'][$s];
$_FILES['file_1']['type'] = $value['type'][$s];
$_FILES['file_1']['error'] = $value['error'][$s];
$_FILES['file_1']['tmp_name'] = $value['tmp_name'][$s];
$_FILES['file_1']['size'] = $value['size'][$s];
$config['upload_path'] = 'application/views/uploads';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '1000000';
//$config['max_width'] = '1024';
//$config['max_height'] = '768';
$this->load->library('upload', $config);
$this->upload->do_upload();
$data = $this->upload->data();
$name_array[] = $data['file_name'];
}
$names= implode(',', $name_array);
return $names;
}
public function check()
{
$data = $this->doupload();
$data_1 = $this->doupload_1();
print_r($data);
echo "<br>";
print_r($data_1);
}
}
?>
查看:-
<html>
<head>
<title>Upload Form</title>
</head>
<body>
<?php echo form_open_multipart('imageupload/check');?>
<input name="userfile[]" id="userfile" type="file" multiple="" />
<input name="file_1[]" id="file" type="file" multiple=""/>
<input type="submit" value="upload" />
<?php echo form_close() ?>
</body>
</html>
提前致谢!
【问题讨论】:
-
我听不懂你的问题-请告诉我?
-
你想要加密形式的文件名吗??
-
我想将文件名存储在数据库中,所以第一个字段 userfile 应该包含在 doupload() 函数中上传的文件名,file_1 应该包含在 doupload1() 函数中上传的文件名
-
但是为什么你要带两个上传者。只需使用一个上传器,您就可以上传多张图片,例如添加按钮“添加更多图片”。
-
告诉我这是否是您的要求。你的 html 中有两个文件字段?以及代码upload1和upload中的两个函数?您要从两个输入字段上传两张两张图片?但是您的两个 codeigniter 代码运行四四次?
标签: php codeigniter file-upload