我正在构建一个可以上传单个图像或多个图像的功能,具体取决于它是否来自一个字段数组。
这是函数和调用者:
private function imageUpload($image, $altText, $uploadDir)
{
$uploadDir = (!substr($uploadDir, "/")) ? $uploadDir."/" : $uploadDir;
print_r($_POST[$image]);
if(is_array($_POST[$image]))
{
foreach($_FILES[$image] as $image) //Line 316
{
//$targetPath = $uploadDir.basename($image['name']);
//echo $targetPath;
echo "array";
}
}
else
{
$targetPath = $uploadDir.basename($image['name']);
//echo $targetPath;
echo "not array";
}
}
$this->imageUpload('pei_image', 'pei_alt', '/images/upload/products/');
我尝试在pei_image []字段中使用1/2图像字段,但是我收到以下错误:
遇到PHP错误
严重性:注意 消息:未定义的索引:pei_image
文件名:models / products_model.php
行号:316
遇到PHP错误
严重性:警告
消息:为foreach()提供的参数无效
文件名:models / products_model.php
行号:316
但是当我print_r给$ _POST [$ image]时,我得到了一个数值正确的数组。结果如下:
数组([0] => 06 Lect03 WD Concepts - mod SP.png [1] => brtemplate.jpg)
有什么问题?
修改
$ _FILES数组是空的,为什么会这样?以下是表单中的2个图片上传字段:
<input type="file" name="pei_image[]" value="Showing-the-Heavy-horse.jpg" class="imageUpload" onchange="removePreviewButton(this, 2);">
<input type="file" name="pei_image[]" value="Showing-the-Heavy-horse.jpg" class="imageUpload" onchange="removePreviewButton(this, 3);">
答案 0 :(得分:0)
替换
foreach($_FILES[$image] as $image)
通过
foreach($_FILES as $image)
答案 1 :(得分:0)
试试这个..
private function imageUpload($image, $altText, $uploadDir)
{
$uploadDir = (!substr($uploadDir, "/")) ? $uploadDir."/" : $uploadDir;
if(is_array($image)
{
foreach($image as $img) //Line 316
{
//$targetPath = $uploadDir.basename($image['name']);
//echo $targetPath;
echo "array";
}
}
else
{
$targetPath = $uploadDir.basename($image['name']);
//echo $targetPath;
echo "not array";
}
}
$this->imageUpload('pei_image', 'pei_alt', '/images/upload/products/');
答案 2 :(得分:0)
假设$ image是您的字段的名称,例如'pictures'
或'images'
或其他什么,这会更好:
if (!empty($_FILES[$image])) {
foreach ($_FILES[$image]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES[$image]["tmp_name"][$key];
$name = $_FILES[$image]["name"][$key];
// do your stuff
}
}
}
答案 3 :(得分:0)
问题是我的enctype中的拼写错误,因此它默认为“application / x-www-form-urlencoded”,因此它不会上传到$ _FILES数组。