如何使用codegniter上传多个图像
问题描述:
我想上传多个图像使用codeigniter这actullay工作正常,但我想存储图像到特定的目录。 我的目录结构是如何使用codegniter上传多个图像
上传/真正/
这个目录,我想创建一个多个目录与用户ID的名称,以便目录结构变为内
uplods /实/ 20
我添加了逻辑并编写了如下代码: 考虑$ PATH = “真正的”,和$用户id = “20”
function image_upload($path,$userid)
{
$basepath = "uploads/".$path;
echo "base-path > ".$basepath;
echo "<br>working-dir > ".getcwd();
chdir($basepath);
echo "<br>working-dir > ".getcwd();
if(!file_exists($userid)){
mkdir($userid);
chdir($userid);
echo "<br>Working-dir > ".getcwd();
$filesCount = count($_FILES['image']['name']);
echo "<br> FileCount > ".$filesCount;
for($i = 0; $i < $filesCount; $i++){
$_FILES['img']['name'] = $_FILES['image']['name'][$i];
$_FILES['img']['type'] = $_FILES['image']['type'][$i];
$_FILES['img']['tmp_name'] = $_FILES['image']['tmp_name'][$i];
$_FILES['img']['error'] = $_FILES['image']['error'][$i];
$_FILES['img']['size'] = $_FILES['image']['size'][$i];
echo "<br>FILES-Array > <pre>";
print_r($_FILES);
echo "<pre>";
$config['upload_path']= "/";
$config['file_name']=$userid .$i. '.jpg';
$config['allowed_types']= 'jpg|png';
$config['max_size']= 2048;
echo "<br>CONFIG-Array > <pre>";
print_r($config);
echo "<pre>";
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (! $this->upload->do_upload('img'))
{
$error = array('error' => $this->upload->display_errors());
echo "<br>UPLOAD-ERROR > <pre>";
print_r($error);
echo "<pre>";
}
else
{
$da = array('upload_data' => $this->upload->data());
echo "_________IMAGE UPLOADED_______";
}
}
}else{
echo "<br>Folder Exist ...";
}
die();
和浏览器的输出是:
base-path > uploads/real
working-dir > C:\wamp64\www\ob_03
working-dir > C:\wamp64\www\ob_03\uploads\real
Working-dir > C:\wamp64\www\ob_03\uploads\real\20
FileCount > 1
FILES-Array >
Array
(
[image] => Array
(
[name] => Array
(
[0] => abhi.jpg
)
[type] => Array
(
[0] => image/jpeg
)
[tmp_name] => Array
(
[0] => C:\wamp64\tmp\php336F.tmp
)
[error] => Array
(
[0] => 0
)
[size] => Array
(
[0] => 72125
)
)
[img] => Array
(
[name] => abhi.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp64\tmp\php336F.tmp
[error] => 0
[size] => 72125
)
)
CONFIG-Array >
Array
(
[upload_path] =>/
[file_name] => 180.jpg
[allowed_types] => jpg|png
[max_size] => 2048
)
_________IMAGE UPLOADED_______
我不上打印print_r($error);
得到任何错误,但图像没有上传到我的目录为什么?
答
尝试使用FCPATH
进行上传有时效果会更好。
FCPATH:路径的前端控制器(本文件)(CI根)
$config['upload_path'] = FCPATH . 'uploads/real/18/';
或者尝试
$config['upload_path'] = './uploads/real/18/';
确保您的图片上传文件夹设置0777。
可能会发生,因为你没有告诉它!您能否看到您将上传路径设置为“/”。它在你的代码和你的输出中都这么说。 – TimBrownlaw
当我将上传路径设置为[upload_path] => uploads/real/18时,我从错误数组[错误]中获得错误=> 上传路径似乎不是有效的。 –
当你使用mkdir时,你的路径是否被创建?它们存在吗?您的基本文件夹是否具有正确的权限? – TimBrownlaw