Php 该函数只工作1次
我编写了一个脚本,用于将图像上载到我的服务器。用户可以使用它来上传他们的头像或作品 这是functions.php中的函数Php 该函数只工作1次,php,file,function,upload,Php,File,Function,Upload,我编写了一个脚本,用于将图像上载到我的服务器。用户可以使用它来上传他们的头像或作品 这是functions.php中的函数 function save_image($image, $uploadedfile) { error_reporting(0); $change=""; $abc=""; define ("MAX_SIZE","40000"); function getExtension($str) { $i = strrpos($str,".");
function save_image($image, $uploadedfile)
{
error_reporting(0);
$change="";
$abc="";
define ("MAX_SIZE","40000");
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$errors=0;
if ($image)
{
$filename = stripslashes($image);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
$change='<div class="msgdiv">Unknown Image extension </div> ';
$errors=1;
}
else
{
$size=filesize($uploadedfile);
if ($size > MAX_SIZE*1024)
{
$change='<div class="msgdiv">You have exceeded the size limit!</div> ';
$errors=1;
}
if($extension=="jpg" || $extension=="jpeg" )
{
$uploadedfile = $uploadedfile;
$src = imagecreatefromjpeg($uploadedfile);
}
else if($extension=="png")
{
$uploadedfile = $uploadedfile;
$src = imagecreatefrompng($uploadedfile);
}
else
{
$src = imagecreatefromgif($uploadedfile);
}
echo $scr;
list($width,$height)=getimagesize($uploadedfile);
$newwidth=$width;
$newheight=$height;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "images/vcard_images/". $image;
imagejpeg($tmp,$filename,100);
imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);
}}
}
但奇怪的是,如果我按SAVE,页面就会变成白色。如果我只调用onces函数,那么只有这个:
$work1 = $_FILES["work1"]["name"];
save_image($_FILES["work1"]["name"], $_FILES['work1']['tmp_name']);
它工作得非常好
不知道我做错了什么
问候
编辑:
错误报告告诉我:
Notice: Constant MAX_SIZE already defined in /Applications/XAMPP/xamppfiles/htdocs/vcard2/user/functions.php on line 11
Fatal error: Cannot redeclare getExtension() (previously declared in /Applications/XAMPP/xamppfiles/htdocs/vcard2/user/functions.php:12) in /Applications/XAMPP/xamppfiles/htdocs/vcard2/user/functions.php on line 12
您有一个键入错误:echo$scr而不是echo$src我建议您看看HTML5的文件API,它管理多个文件上传和拖放系统。如果您想玩游戏,建议使用两种脚本: 及
我尝试了两种方法,它们都很好您的错误是两种不同的,但发生的原因相同:
Notice: Constant MAX_SIZE already defined in /Applications/XAMPP/xamppfiles/htdocs/vcard2/user/functions.php on line 11
您可以在函数内部编写DEFINE。第一次运行时,它工作正常,但第二次运行时,它已被定义。将定义移出功能save_image
Fatal error: Cannot redeclare getExtension() (previously declared in /Applications/XAMPP/xamppfiles/htdocs/vcard2/user/functions.php:12) in /Applications/XAMPP/xamppfiles/htdocs/vcard2/user/functions.php on line 12
这个错误也是如此。函数运行函数GetExtension的秒数被清除。将函数移到
save_image
之外,它应该可以正常工作。您的函数包含define
语句。每次调用函数时都会执行此操作,但是当尝试重新定义现有常量时,define
失败
将此define
语句放在函数之外
这个函数的情况也一样:我不清楚为什么在另一个函数中这样做;不要。将函数
getExtension
移出save\u image
函数
PHP中的嵌套函数不绑定到函数的“私有”范围,
它们进入全局函数表。
并且不能重新声明(全局)函数
如果确实要嵌套函数,则仅在未声明时声明:
if (!function_exists('getExtension')) { function getExtension(){...}}
你应该考虑把<代码>定义语句也从函数中移出。 或者让它有条件:
if (!defined('MAX_SIZE')) { define('MAX_SIZE', 1024); }
您还可以使用isset
或empty
检查请求变量,即在循环中:
foreach (range(1,7) as $num) {
if (!empty($_FILES['work'.$num]['tmp_name'])) {
save_image($_FILES["work".$num]["name"], $_FILES['work'.$num]['tmp_name']);
}
}
查看代码只需1张图片,您必须将图像存储在一个数组中。您是否启用了错误消息?请尝试启用(使用
E_ALL
),这样“白色页面”可能会更有用。您还可以使用isset或empty进行检查:foreach(范围(0,7)为$num){if(!empty($u文件['work.$num]['tmp_name'])){save_image($_FILES[“work”。$num][“name”],$_FILES[“work”。$num][“tmp_name”];)}
哦,是的,我明白了,但这并不能让它正常工作:)无论如何谢谢!!谢谢!但我真的很想使用这个脚本!
foreach (range(1,7) as $num) {
if (!empty($_FILES['work'.$num]['tmp_name'])) {
save_image($_FILES["work".$num]["name"], $_FILES['work'.$num]['tmp_name']);
}
}