Hoi iedereen ik heb een probleem met mijn upload script.

de code staat onderaan deze post.

het probleem is deze regel :
<?php
if(imagepng(imagecreatefromstring($_FILES['profielFoto']['tmp_name']), $path.$id.".png"))
?>

de error die deze regel geeft is als volgt:
<br />
<b>Warning</b>: imagecreatefromstring(): Data is not in a recognized format in <b>D:\Program Files\devel\xampp\htdocs\git\Business-leaders\controller\adminajax_controller.php</b> on line <b>1430</b><br />
<br />
<b>Warning</b>: imagepng() expects parameter 1 to be resource, boolean given in <b>D:\Program Files\devel\xampp\htdocs\git\Business-leaders\controller\adminajax_controller.php</b> on line <b>1430</b><br />

iemand suggesties?

Mvg
Ralph

de controller
<?php
elseif($this->arguments[0] == 'saveprofilefoto'){

// path waar naar de foto moet worden geupload.
$path=Settings::$include_path."/uploaded/avatar_realsize/test/avatar_realsize/";
// toegestaane extenties
$valid_formats = array("jpg", "png","jpeg");
// maximale grootte (5mb) in bytes, dit komt omdat de ajax het doorgeeft in bytes.
$max_size = 5 * 1024 * 1024;
//nieuwe naam
$id=$_POST[0]['id'];

// grootte
$size= $_FILES['profielFoto']['size'];

// naam
$name= $_FILES['profielFoto']['name'];
if($size < $max_size)
{
list($txt,$ext) = explode(".",$name);
if(in_array($ext,$valid_formats))
{
// tijdelijke servernaam
if(imagepng(imagecreatefromstring($_FILES['profielFoto']['tmp_name']), $path.$id.".png"))
{
// path voor de geresizede img.
$resized_path=Settings::$include_path."/uploaded/avatar_realsize/test/avatar/";
//public static function resizeImage($originalImage,$type,$toWidth,$toHeight)
// imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
// small 50px x 50px

$small=image::resizeImage($path.$user_id.".png","png",50,50);
imagepng($small, $resized_path.$id."_small.png");

// medium 100x100
$medium=image::resizeImage($path.$user_id.".png","png",100,100);
imagepng($medium,$resized_path.$id."_medium.png");

// large 250x250
$large=image::resizeImage($path.$user_id.".png","png",250,250);
imagepng($large, $resized_path.$id."_large.png");
echo json_encode(array("success"=> true));
}
}else{
// extentie niet toegestaan
echo json_encode(array('error'=>' extentie niet toegestaan'));
}
}
}
else
{
// bestand te groot
echo json_encode(array('error'=>' file te groot'));
}
?>

[size=xsmall]Toevoeging op 03/06/2013 10:40:05:[/size]

http://jquery.malsup.com/form/#api hier staat de api van de plugin die wordt gebruikt
Je bestand komt dus aan, dat is het probleem niet. Dan komt het er mogelijk op neer dat png images niet worden ondersteund, want dat is feite wat de foutmelding zegt.
Check eens met:
<?php
if (imagetypes() & IMG_PNG) {
echo 'PNG Support is enabled';
} else {
echo 'PNG not supported';
}
?>
png enebled komt daar uit


[size=xsmall]Toevoeging op 03/06/2013 15:16:04:[/size]

het werkt nu moet alleen nog ff kijken wat ik veranderd heb vanwege de ernorme hoeveel heid comments die ik had gemaakt

antwoord volgt

[size=xsmall]Toevoeging op 03/06/2013 15:26:55:[/size]

<?php
// temp name
$img=$_FILES['profielFoto']['tmp_name'];
// path waar naar de foto moet worden geupload.
$path=Settings::$include_path."/uploaded/avatar_realsize/test/avatar_realsize/";
// toegestaane extenties
$valid_formats = array("jpg", "png","jpeg");
// maximale grootte (5mb) in bytes, dit komt omdat de ajax het doorgeeft in bytes.
$max_size = 5 * 1024 * 1024;
//nieuwe naam
$id=$_POST[0]['id'];

// grootte
$size= $_FILES['profielFoto']['size'];
// naam

$name= $_FILES['profielFoto']['name'];
if($size < $max_size)
{
list($txt,$ext) = explode(".",$name);
if(in_array($ext,$valid_formats))
{
// tijdelijke servernaam
if(move_uploaded_file($_FILES['profielFoto']['tmp_name'],$path."/".$id.".".$ext))
{

// path voor de geresizede img.
$resized_path=Settings::$include_path."/uploaded\avatar_realsize\test\avatar";
//public static function resizeImage($originalImage,$type,$toWidth,$toHeight)
// imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
// small 50px x 50px
print_r($resized_path);
$small=image::resizeImage($path.$user_id.".png","png",50,50);
imagepng($small, $resized_path.$id."_small.png");

// medium 100x100
$medium=image::resizeImage($path.$user_id.".png","png",100,100);
imagepng($medium,$resized_path.$id."_medium.png");

// large 250x250
$large=image::resizeImage($path.$user_id.".png","png",250,250);
imagepng($large, $resized_path.$id."_large.png");
echo json_encode(array("success"=> true));
}
}else{
// extentie niet toegestaan
echo json_encode(array('error'=>' extentie niet toegestaan'));
}
}
}
else
{
// bestand te groot
echo json_encode(array('error'=>' file te groot'));
}
?>

het probleem is nog niet helemaal opgelost het probleem zit het nu in het resizen


[size=xsmall]Toevoeging op 03/06/2013 15:27:28:[/size]

<b>Warning</b>: imagepng(D:\Program Files\devel\xampp\htdocs\git\Business-leaders/uploaded\avatar_realsize est\avatar_small.png): failed to open stream: Invalid argument in <b>D:\Program Files\devel\xampp\htdocs\git\Business-leaders\controller\adminajax_controller.php</b> on line <b>1441</b><br />
<br />
<b>Warning</b>: imagepng(D:\Program Files\devel\xampp\htdocs\git\Business-leaders/uploaded\avatar_realsize est\avatar_medium.png): failed to open stream: Invalid argument in <b>D:\Program Files\devel\xampp\htdocs\git\Business-leaders\controller\adminajax_controller.php</b> on line <b>1445</b><br />
<br />
<b>Warning</b>: imagepng(D:\Program Files\devel\xampp\htdocs\git\Business-leaders/uploaded\avatar_realsize est\avatar_large.png): failed to open stream: Invalid argument in <b>D:\Program Files\devel\xampp\htdocs\git\Business-leaders\controller\adminajax_controller.php</b> on line <b>1449</b><br />

[size=xsmall]Toevoeging op 03/06/2013 15:30:13:[/size]

einde van de url zou moeten zijn : /uploaded\avatar_realsize\test\avatar
maar print_r()

geeft D:\Program Files\devel\xampp\htdocs\git\Business-leaders/uploaded\avatar_realsize est\avatar
dit moet zijn :D:\Program Files\devel\xampp\htdocs\git\Business-leaders/uploaded\avatar_realsize\test\avatar

iemand suggesties
\t is een tab. Dat kan je voorkomen door geen dubbele quotes te gebruiken maar enkele:
<?php
$resized_path=Settings::$include_path.'/uploaded\avatar_realsize\test\avatar';
?>
Ook gebruik je slashes en backslashes door elkaar wat soms voor problemen kan zorgen.
kwam ik ook net achter
de upload werkt nu helemaal nu alleen nog resizen en dan is het klaar
hoi iedereen heb nog een probleem rondom dit script en dat is dat ik moet controleren of de foto/logo is ook daadwerkelijk netjes in de mappen staat.
als dit het geval is, is er niks aan de hand wanneer dit niet gebeurd moet de gebruiker gelijk weer verwijderd worden uit de database iemand suggesties?

java script
<?php
function valiadateGebruiker(){
var voornaam = $('input#gebruikersAanmakenVoornaam').val();
var achternaam = $('input#gebruikersAanmakenAchternaam').val();
var wachtwoord = $('input#gegenereerdWachtwoord').val();
var bedrijfsnaam = $('input#gebruikersAanmakenBedrijfsnaam').val();
var email = $('input#gebruikersAanmakenEmail').val();

if(voornaam =='' || voornaam == null || voornaam ==undefined || voornaam ==' '){
$('#gebruikersAanmakenVoornaam').animate({ borderTopColor: '#FF0000', borderLeftColor: '#FF0000', borderRightColor: '#FF0000', borderBottomColor: '#FF0000' }, 300);
var voornaamError=1;
}else{
$('#gebruikersAanmakenVoornaam').animate({ borderTopColor: '#ABADB3', borderLeftColor: '#ABADB3', borderRightColor: '#ABADB3', borderBottomColor: '#ABADB3' }, 0);
}

if(achternaam =='' || achternaam == null || achternaam ==undefined || achternaam ==' '){
$('#gebruikersAanmakenAchternaam').animate({ borderTopColor: '#FF0000', borderLeftColor: '#FF0000', borderRightColor: '#FF0000', borderBottomColor: '#FF0000' }, 300);
var achternaamError=1;
}else{
$('#gebruikersAanmakenAchternaam').animate({ borderTopColor: '#ABADB3', borderLeftColor: '#ABADB3', borderRightColor: '#ABADB3', borderBottomColor: '#ABADB3' }, 0);
}

if(wachtwoord=='' || wachtwoord == null || wachtwoord ==undefined || wachtwoord == ' '){
if(wachtwoord == undefined){
$('#wachtwoordgenereerbttn').animate({"background-color":"#FF2B2B"},300);
}
$('#gegenereerdWachtwoord').animate({ borderTopColor: '#FF0000', borderLeftColor: '#FF0000', borderRightColor: '#FF0000', borderBottomColor: '#FF0000' }, 300);
var wachtwoorError=1;
}else{
$('#gegenereerdWachtwoord').animate({ borderTopColor: '#ABADB3', borderLeftColor: '#ABADB3', borderRightColor: '#ABADB3', borderBottomColor: '#ABADB3' }, 0);
}

if(bedrijfsnaam =='' || bedrijfsnaam == null || bedrijfsnaam == undefined || bedrijfsnaam ==' '){
$('#gebruikersAanmakenBedrijfsnaam').animate({ borderTopColor: '#FF0000', borderLeftColor: '#FF0000', borderRightColor: '#FF0000', borderBottomColor: '#FF0000' }, 300);
var bedrijfsError=1;
}else{
$('#gebruikersAanmakenBedrijfsnaam').animate({ borderTopColor: '#ABADB3', borderLeftColor: '#ABADB3', borderRightColor: '#ABADB3', borderBottomColor: '#ABADB3' }, 0);
}
if(email =='' || email == ' ' || email == null || email == undefined){
$('#gebruikersAanmakenEmail').animate({ borderTopColor: '#FF0000', borderLeftColor: '#FF0000', borderRightColor: '#FF0000', borderBottomColor: '#FF0000' }, 300);
var emailError=1;
}else{

var atpos = email.indexOf("@");
var dotpos = email.indexOf(".");
if(atpos <1 || dotpos< atpos+2 ||dotpos>=email.length)
{
var emailError=1;
$('#gebruikersAanmakenEmail').animate({ borderTopColor: '#FF0000', borderLeftColor: '#FF0000', borderRightColor: '#FF0000', borderBottomColor: '#FF0000' }, 300);
}
else
{
$('#gebruikersAanmakenEmail').animate({ borderTopColor: '#ABADB3', borderLeftColor: '#ABADB3', borderRightColor: '#ABADB3', borderBottomColor: '#ABADB3' }, 0);
}
}
if(voornaamError || achternaamError || wachtwoorError || bedrijfsError || emailError)
{
$('#gebruikersError').css("color","red").html("<h3><b>Vul alle velden met een * in</b></h3>");

return false;
}
else
{
// hier is die nu.
addUser();
return false;
}
}
function addUser()
{
// validatie van de gegevensvind plaats in : function valiadategebruiker()
// persoons gegevens
var voornaam = $('input#gebruikersAanmakenVoornaam').val(); // verplicht
var tussenvoegsel = $('input#gebruikersAanmakenTussenvoegsel').val();
var achternaam = $('input#gebruikersAanmakenAchternaam').val(); // verpicht
var email = $('input#gebruikersAanmakenEmail').val(); // verplicht
var functie = $('input#gebruikersAanmakenFunctie').val();
var mobiel = $('input#gebruikersAanmakenMobiel').val();
var ervaring = $('textarea#gebruikersAanmakenErvaring').val();
var wachtwoord = $('input#gegenereerdWachtwoord').val(); // verpicht
var codedpass= hex_sha512(wachtwoord).toLowerCase();

// bedrijf gegevens
var bedrijfsnaam = $('input#gebruikersAanmakenBedrijfsnaam').val(); // verpicht
var bedrijfsInfo = $('textarea#gebruikersAanmakenBedrijfsInfo').val();

var voorletter= voornaam.charAt(0);

// ajax call
$.ajax(
{
type: "POST",
url: "<?php echo Settings::$url; ?>/nl/adminajax/gebruikers/gebruikeraanmaken",
data:
{
wachtwoord : codedpass,
voornaam : voornaam,
tussenvoegsel : tussenvoegsel,
achternaam : achternaam,
functie : functie,
email : email,
mobiel : mobiel,
ervaring : ervaring,
bedrijfsnaam : bedrijfsnaam,
bedrijfsInfo : bedrijfsInfo,
voorletter: voorletter
},
dataType: "json",
success: function(data)
{

var id = data.id;
var bedrijf_id= data.bedrijf_id;
// profielfoto
var options=
{
url:"<?php echo Settings::$url; ?>/nl/adminajax/gebruikers/saveprofilefoto",
type:"post",
data:{id:id}
};
// bedrijfslogo
var options2 =
{
url:"<?php echo Settings::$url; ?>/nl/adminajax/gebruikers/bedrijfslogo",
type:"post",
data:{bedrijf_id:bedrijf_id}
};
$('#profielfotoform').ajaxSubmit(options);
$('#bedrijfslogoform').ajaxSubmit(options2);
}
});
}
?>

php
<?php
// nieuw gebruikers aanmaken.
if($this-> arguments[0] == 'gebruikeraanmaken')
{
$voorletter = $_POST['voorletter'];
$wachtwoord = $_POST['wachtwoord'];
$voornaam = Database::quote($_POST['voornaam']);
$tussenvoegsel = Database::quote($_POST['tussenvoegsel']);
$achternaam = Database::quote($_POST['achternaam']);
$functie = Database::quote($_POST['functie']);
$email = Database::quote($_POST['email']);
$mobiel = Database::quote($_POST['mobiel']);
$ervaring = Database::quote($_POST['ervaring']);
$bedrijfsnaam = Database::quote($_POST['bedrijfsnaam']);
$bedrijfsInfo = Database::quote($_POST['bedrijfsInfo']);


$gebruikersnaam= $voorletter.'.';

if($tussenvoegsel != '')
{
$gebruikersnaam .= $_POST['tussenvoegsel'];
}

$gebruikersnaam .= $_POST['achternaam'];

// queries om de gebruikers informatie mee te verwerken naar de database.
$sqlinsertuser ="INSERT INTO `users`(`username` , `password` ,`email` ,`group_id`)VALUES('".$gebruikersnaam ."', '".$wachtwoord."', ".$email.", '1')";
$test =Database::insert($sqlinsertuser);

$sqlselectuserid ="SELECT `user_id` FROM `users` ORDER BY `user_id` DESC LIMIT 1 ";
$id= Database::execute($sqlselectuserid);

$sqlinsterprofile ="INSERT INTO `profile`(`user_id` ,`voornaam` ,`tussenvoegsel` ,`achternaam`,`ervaring` ,`mobiel` ,`email`)VALUES('".$id[0]['user_id']."', ".$voornaam.", ".$tussenvoegsel.", ".$achternaam.", ".$ervaring.", ".$mobiel.", ".$email.")";
$test2=Database::insert($sqlinsterprofile);


$sqlselectprofileid ="SELECT `profile_id` FROM `profile` WHERE `voornaam` = ".$voornaam." AND `tussenvoegsel` = ".$tussenvoegsel." AND `achternaam` = ".$achternaam." ORDER BY `profile_id` DESC ";
$test3=Database::execute($sqlselectprofileid);

$sqlinsertbedrijfid ="INSERT INTO `profile_bedrijf`(`profile_id`, `bedrijf_naam`, `bedrijf_informatie`)VALUES('".$test3[0]['profile_id']."', ".$bedrijfsnaam.", ".$bedrijfsInfo.")";
$test4=Database::execute($sqlinsertbedrijfid);

$sql_get_bedrijf_id="SELECT `bedrijf_id` FROM `profile_bedrijf` WHERE `profile_id` =".$test3[0]['profile_id']."";
$test5=Database::execute($sql_get_bedrijf_id);

echo json_encode(array('success'=> true,'id' => $id,'bedrijf_id'=>$test5));
}
else if($this->arguments[0] == 'saveprofilefoto')
{
// temp name
$img=$_FILES['profielFoto']['tmp_name'];
// path waar naar de foto moet worden geupload.
$path=Settings::$include_path."/uploaded/avatar_realsize/test/avatar_realsize/";
// toegestaane extenties
$valid_formats = array("jpg", "png","jpeg");
// maximale grootte (5mb) in kb, dit komt omdat de ajax het doorgeeft in kb.
$max_size = 100 * 1024;
//nieuwe naam
$id=$_POST['id'][0]['user_id'];

// grootte
$size= $_FILES['profielFoto']['size'];
// naam

$name= $_FILES['profielFoto']['name'];
if($size < $max_size)
{
list($txt,$ext) = explode(".",$name);
if(in_array($ext,$valid_formats))
{
// tijdelijke servernaam
if(move_uploaded_file($_FILES['profielFoto']['tmp_name'],$path."/".$id.".".$ext))
{

if($ext =='jpg'|| $ext == 'jpeg')
{
$image= imagecreatefromjpeg($path.$id.'.'.$ext);
imagepng($image,$path.'/'.$id.'.png');
imagedestroy($image);
}

// path voor de geresizede img.
$resized_path=Settings::$include_path.'\uploaded\avatar_realsize\test\avatar\\';

//public static function resizeImage($originalImage,$type,$toWidth,$toHeight)
// imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
// small 50px x 50px
$small=image::resizeImage($path.$id.".png","png",50,50);
imagepng($small, $resized_path.$id."_small.png");

// medium 100x100
$medium=image::resizeImage($path.$id.".png","png",100,100);
imagepng($medium,$resized_path.$id."_medium.png");

// large 250x250
$large=image::resizeImage($path.$id.".png","png",250,250);
imagepng($large, $resized_path.$id."_large.png");
echo json_encode(array("profielfoto"=> "true"));
}
}else{
// extentie niet toegestaan
echo json_encode(array('profielfotoerror'=>' extentie niet toegestaan'));
}
}
else
{
// bestand te groot
echo json_encode(array('profielfotoerror'=>' file te groot'));
}
}
if($this->arguments[0] == "bedrijfslogo")
{
// verzonden img met alle gegevens.
//$img=$_FILES['Bedrijfslogo']['tmp_name'];
// path waar naar de foto moet worden geupload.
$path=Settings::$include_path."/uploaded/avatar_realsize/test/bedrijf_logo/";
// toegestaane extenties
$valid_formats = array("jpg", "png","jpeg");
// maximale grootte (5mb) in kb , dit komt omdat de ajax het doorgeeft in kb.
$max_size = 100*1024;
//nieuwe naam
$bedrijf_id=$_POST['bedrijf_id'][0]['bedrijf_id'];
// grootte
$size= $_FILES['Bedrijfslogo']['size'];
// naam
$name= $_FILES['Bedrijfslogo']['name'];

if($size < $max_size)
{
list($txt,$ext) = explode(".",$name);
if(in_array($ext,$valid_formats))
{
move_uploaded_file($_FILES['Bedrijfslogo']['tmp_name'],$path."/".$bedrijf_id.".".$ext);

if($ext =='jpg'|| $ext == 'jpeg')
{
$image= imagecreatefromjpeg($path.$bedrijf_id.'.'.$ext);
imagepng($image,$path.'/'.$bedrijf_id.'.png');
imagedestroy($image);
}
echo json_encode(array('bedrijfslogo'=>'true'));
}else{
// extentie niet toegestaan
echo json_encode(array('bedrijfserror'=>' extentie niet toegestaan'));
}
}
else
{
// bestand te groot
echo json_encode(array('bedrijfserror'=>'file te groot'));
}
}

?>

Reageren