Php图片上传
我是PHP新手,目前正在开发图片上传功能,我有一个表单,你可以上传图片,现在图片没有必要上传,问题是下面的代码不允许提交没有图片的表单 这是我的密码Php图片上传,php,Php,我是PHP新手,目前正在开发图片上传功能,我有一个表单,你可以上传图片,现在图片没有必要上传,问题是下面的代码不允许提交没有图片的表单 这是我的密码 $photoCount = count($_FILES['photo']['name'] ); if($photoCount > 0) { for($i = 0;$i<$photoCount;$i++) { $name = $_FILES['photo']['name'][$i]; $name
$photoCount = count($_FILES['photo']['name'] );
if($photoCount > 0) {
for($i = 0;$i<$photoCount;$i++) {
$name = $_FILES['photo']['name'][$i];
$nameArray = explode('.', $name);
$fileName = $nameArray[0];
$fileExt = $nameArray[1];
$mime = explode('/', $_FILES['photo']['type'][$i]);
$mimeType = $mime[0];
$mimeExt = $mime[1];
$tmpLoc[] = $_FILES['photo']['tmp_name'][$i];
$fileSize = $_FILES['photo']['size'][$i];
$uploadName = $name;
$uploadPath[] = BASEURL.'/admin/productimages/'.$uploadName;
if ($i != 0) {
$dbpath .= ',';
}
$dbpath .= '/project/admin/productimages/'.$uploadName;
if($mimeType != 'image') {
$errors[] .= 'The file must be an image.';
}
if(!in_array($fileExt, $allowed)) {
$errors[] .= 'The file extension must be a png, jpg, jpeg, or gif.';
}
if($fileSize > 15000000) {
$errors[] .= 'The file size must be under 15 megabytes.';
}
if ($fileExt != $mimeExt && ($mimeExt == 'jpeg' && $fileExt != 'jpg')) {
$errors[] = 'File extension does not match the file';
}
}
}
我的错误
Notice: Undefined offset: 1 in C:\xampp\htdocs\project\admin\products.php on line 99
Notice: Undefined offset: 1 in C:\xampp\htdocs\project\admin\products.php on line 102
这是第99行和第102行
$fileExt = $nameArray[1];
$mimeExt = $mime[1];
哦
问题是数组索引错误
在您的代码中,$name
是一个空字符串(对于您转储的结果),因此explode('.',$name)
将返回类似于此数组的数组[“”]
。数组长度为1,当use$nameArray[1]
超出长度时,将得到错误
第二个错误与第一个错误相同
我认为您应该首先检查
$name
是否为空 在处理名称之前,请检查错误
if ($_FILES['photo']['error'][$i] > 0) {
echo 'Didn\'t work';
} else {
// Process the file
}
在这种情况下,错误设置为“4”(上载错误文件)。存在一系列错误,如果存在错误,则文件将不存在,并且无法处理。因此,请先检查。当您尝试在没有图片的情况下提交时,会出现哪些错误?一定有一些,这将是一个错误的迹象。@jonmrich我更新了一个问题,包括一个错误,我收到了请看一看谢谢你工作得很有魅力,你是一个超级明星
if ($_FILES['photo']['error'][$i] > 0) {
echo 'Didn\'t work';
} else {
// Process the file
}