我有一个简单的脚本,可以在我的服务器上传文件并将详细信息插入数据库。
使用下面的代码,我收到两个错误..
我试图只允许.jpg。 gif和.png格式但不起作用..所有格式都上传到服务器上..
如果上传文件为空,则将数字导入数字(1,2,3 ...)到Mysql中。
我试了好几个小时来解决这些问题,但我不知道什么是错的。
谢谢..
<?php
include_once('connect.php');
if(isset($_FILES['files'])){
$errors = array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['files']['name'][$key];
$file_size = $_FILES['files']['size'][$key];
$file_type = $_FILES['files']['type'][$key];
if($file_type == "image/gif"){
$sExt = ".gif";
} elseif($file_type == "image/jpeg" || $file_type == "image/pjpeg"){
$sExt = ".jpg";
} elseif($file_type == "image/png" || $file_type == "image/x-png"){
$sExt = ".png";
}
if (!in_array($sExt, array('.gif','.jpg','.png'))) {
$errors[] = "Image types alowed are (.gif, .jpg, .png) only!";
}
$file_tmp = $_FILES['files']['tmp_name'][$key];
$file_type = $_FILES['files']['type'][$key];
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
$query = "INSERT into offers_pics (`offer_id`,`pic_name`,`pic_type`) VALUES ('$user_id','$file_name','$file_type'); ";
$result = mysqli_query($link,$query);
$desired_dir = "user_data";
if(empty($errors) == true){
if(is_dir($desired_dir) == false){
mkdir("$desired_dir", 0700); // Create directory if it does not exist
}
if(is_dir("$desired_dir/".$file_name) == false){
move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
}else{ // rename the file if another one exist
$new_dir = "$desired_dir/".$file_name.time();
rename($file_tmp,$new_dir) ;
}
}else{
print_r($errors);
}
}
if(empty($error)){
echo "Success";
}
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]"> <br/>
<input type="file" name="files[]"> <br/>
<input type="file" name="files[]"> <br/>
<input type="file" name="files[]"> <br/>
<input type="file" name="files[]" > <br/><br/>
<input type="submit"/>
</form>
enter code here
答案 0 :(得分:1)
对于第一个错误,错误数组在foreah之外,因此您不清除每个文件的错误,并且要插入的查询在if之外检查错误,因此总是ecexcuted
对于第二个错误相同,执行查询时,您必须检查文件是否已上传。
{{1}}