我在apache localhost中运行了代码,并在我的主机中尝试过。在这两个方法中,该方法移动了文件,但文件似乎为0kb。
以下是代码:
如果(isset($ _ POST [ '上传'])){
if($_FILES['profile_foto']['size']>0&&$_FILES['profile_foto']['size']<102400){
$image_extension=explode("/",$_FILES['profile_foto']['type']);
if($image_extension[1]!="jpeg")
echo "<script type='text/javascript'>alert('The extension of the profile image must be jpeg!!!')</script>";
else{
if($_POST['image_id']==""){
$image_id= md5(uniqid());
$_FILES['profile_foto']['name']="tempo/".$image_id.".jpg";
move_uploaded_file($_FILES['profile_foto']['temp_name'],$_FILES['profile_foto']['name']);
list($width,$height)=getimagesize("tempo/".$image_id.".jpg");
if($width<=0||$width>170||$height<=0||$height>200){
$myFile="tempo/".$image_id.".jpg";
$fh=fopen($myFile,'w') or die("The File could not be opened!!!");
fclose($fh);
unlink($myFile);
echo "<script type='text/javascript'>alert('The width of your profile image must be less than 170 px, the height must be less than 200 px!!!')</script>";
}
else
$_POST['image_id']=$fotograf_id;
}
else{
$image_id= md5(uniqid());
$_FILES['profile_foto']['name']="tempo/".$image_id.".jpg";
move_uploaded_file($_FILES['profile_foto']['temp_name'],$_FILES['profile_foto']['name']);
list($width,$height)=getimagesize("tempo/".$image_id.".jpg");
if($width<=0||$width>170||$height<=0||$height>200){
$myFile="tempo/".$image_id.".jpg";
$fh=fopen($myFile,'w') or die("The File could not be opened!!!");
fclose($fh);
unlink($myFile);
echo "<script type='text/javascript'>alert('The width of your profile image must be less than 170 px, the height must be less than 200 px!!!')</script>";
}
else{
$image_will_be_deleted=$_POST['image_id'];
$myFile="tempo/".$image_will_be_deleted.".jpg";
$fh=fopen($myFile,'w') or die("The File cannot be opened!!!");
fclose($fh);
unlink($myFile);
$_POST['image_id']=$image_id;
}
}
}
}
else
echo "<script type='text/javascript'>alert('The size of the profile image must be less than 100 kb!!!')</script>";
}
答案 0 :(得分:5)
当您声称只有一行无效时,您已发布了大约50行代码。删除50行代码并将其替换为:
move_uploaded_file($_FILES['profile_foto']['temp_name'],'tempo/test.jpg');
....并了解当您尝试上传文件时会发生什么。
下进行。
答案 1 :(得分:2)
我认为
$_FILES['profile_foto']['temp_name']
应该是
$_FILES['profile_foto']['tmp_name']
在声明中
move_uploaded_file($_FILES['profile_foto']['temp_name'], $_FILES['profile_foto']['name']);
答案 2 :(得分:1)
如果您想要一个小功能,可以方便地将照片调整为以下内容。如果仅提供$ size1,则将使用此尺寸作为其最大尺寸调整图像的大小,否则如果提供$ size2,则将使用$ size1作为其最大尺寸按比例调整图像大小,然后裁剪其余图像。可能比你更容易($ width&lt; = 0 || $ width&gt; 170 || $ height&lt; = 0 || $ height&gt; 200):
function resizeImg($name, $extension, $size1, $size2) {
if (preg_match('/jpg|jpeg/',$extension)){
$image = imagecreatefromjpeg($name);
}
if (preg_match('/gif/',$extension)){
$image = imagecreatefromgif($name);
}
$old_width = imageSX($image);
$old_height = imageSY($image);
$old_aspect_ratio = $old_width/$old_height;
if($size2 == 0){
$new_aspect_ratio = $old_aspect_ratio;
if($old_width > $old_height){
$new_width = $size1;
$new_height = $new_width / $old_aspect_ratio;
} else {
$new_height = $size1;
$new_width = $new_height * $old_aspect_ratio;
}
} elseif($size2 > 0){
$new_aspect_ratio = $size1/$size2;
//for landscape potographs
if($old_aspect_ratio >= $new_aspect_ratio) {
$new_width = $size1;
$new_height = $size2;
$x1 = round(($old_width - ($old_width * ($new_aspect_ratio/$old_aspect_ratio)))/2);
$old_width = round($old_width * ($new_aspect_ratio/$old_aspect_ratio));
$y1 = 0;
//for portrait photographs
} else{
$new_width = $size1;
$new_height = $size2;
$x1 = 0;
$y1 = round(($old_height/2) - ($new_height/2));
$old_height = round($old_width/$new_aspect_ratio);
}
}
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($new_image, $image, 0, 0, $x1, $y1, $new_width, $new_height, $old_width, $old_height);
return $new_image;
}