2
Skickar in bild (byte []) till min server/domän och försöker lagra dess URL
Postat av lolspelarn den 26 Juni 2016, 21:32
10 kommentarer · 638 träffar
Jag skickar in den från ett annat ställe så jag använder ingen form gjort med PHP utan istället så använder jag mig av en json_decode(file_get_contents) men det kanske inte funkar om man försöker skicka in bilder då jag sett att man då kanske jobbar med något som heter "enctype="multipart/form-data" (?) men då jag inte jobbar med en FORM direkt i PHP så kanske inte det funkar?
Med min nuvarande kod när jag försöker skicka in en bild som är i formatet byte [] så får jag ingenting i loggen alls, inget echo "skrivs ut", byter jag däremot min byte [] och skickar in en string istället så når den koden och detta skrivs ut då i loggen "bilden inte uppladdad".
Det jag vill uppnå är att dels ladda upp bilden i en redan befinitlig mapp på min domän och sen också lägga upp dess URL/http-länk i databasen.
min bild (byte []) som jag skickar in heter "photoData".
Detta är koden jag jobbar med.
<?php
$value = json_decode(file_get_contents('php://input'));
$mysql_pekare= new mysqli ("serv", "user","pass", "db");
if(isset($value)){ //detta är delen jag är osäker på. när jag googlar så verkar man jobba såhär med "enctype="multipart/form-data" men jag är osäker hur jag göra i mitt fall.
$image_name = $value->photoData; //$_FILES['image']['name'];
$image_type = $value->photoData; //$_FILES['photo']['type'];
$image_size = $value->photoData; //$_FILES['photo']['size'];
$image_tmp_name = $value->photoData; //$_FILES['photo']['tmp_name'];
if($image_name==''){
echo "You forgot to select an image. Please choose one!";
print_r($value);
exit();
}
if(move_uploaded_file($image_tmp_name, "photos/$image_name")) {
$thevalue = "http://myaddress.com/"."photos/$image_name";
$stmt = $mysql_pekare->prepare("INSERT INTO photoAlbum (`photo`) VALUES(?)");
$stmt->bind_param("s", $thevalue);
$stmt->execute();
$stmt->close();
$mysql_pekare->close();
echo $thevalue;
}
else{
echo "bilden inte uppladdad";
}
}
else {
echo "finns ingen value";
}
?>
Med min nuvarande kod när jag försöker skicka in en bild som är i formatet byte [] så får jag ingenting i loggen alls, inget echo "skrivs ut", byter jag däremot min byte [] och skickar in en string istället så når den koden och detta skrivs ut då i loggen "bilden inte uppladdad".
Det jag vill uppnå är att dels ladda upp bilden i en redan befinitlig mapp på min domän och sen också lägga upp dess URL/http-länk i databasen.
min bild (byte []) som jag skickar in heter "photoData".
Detta är koden jag jobbar med.
<?php
$value = json_decode(file_get_contents('php://input'));
$mysql_pekare= new mysqli ("serv", "user","pass", "db");
if(isset($value)){ //detta är delen jag är osäker på. när jag googlar så verkar man jobba såhär med "enctype="multipart/form-data" men jag är osäker hur jag göra i mitt fall.
$image_name = $value->photoData; //$_FILES['image']['name'];
$image_type = $value->photoData; //$_FILES['photo']['type'];
$image_size = $value->photoData; //$_FILES['photo']['size'];
$image_tmp_name = $value->photoData; //$_FILES['photo']['tmp_name'];
if($image_name==''){
echo "You forgot to select an image. Please choose one!";
print_r($value);
exit();
}
if(move_uploaded_file($image_tmp_name, "photos/$image_name")) {
$thevalue = "http://myaddress.com/"."photos/$image_name";
$stmt = $mysql_pekare->prepare("INSERT INTO photoAlbum (`photo`) VALUES(?)");
$stmt->bind_param("s", $thevalue);
$stmt->execute();
$stmt->close();
$mysql_pekare->close();
echo $thevalue;
}
else{
echo "bilden inte uppladdad";
}
}
else {
echo "finns ingen value";
}
?>
Uppdatering skriven 27 Juni 2016, 01:34
$value = base64_decode($value); lagt till denna kodsnutten precis efter json_decode(file_get_contents('php://input')); så nu når koden iaf ett echo och echot som nås är "finns ingen value"