Foto uploaden en weergeven op bepaalde plaats in de website.

Status
Niet open voor verdere reacties.

yourdjeric

Gebruiker
Lid geworden
9 aug 2019
Berichten
103
Beste helpers

Ik wil een foto uploaden via een upload script, dat lukt met de volgende script:


HTML:
<? 

// De variabelen 

$path = "/var/www"; 
$file_size_max = 5000 * 1024; 
$possible_size = round($file_size_max / 1024); 
$possible_extensions = array ('jpg', 'jpeg');  
$count_possible_extensions = count($possible_extensions);  

if (!$case) 
{    
$case = 1;    
}    
switch ($case) 
{ 
    
case 1: 
?> 
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 
<table border="0" cellspacing="0" cellpadding="4"> 
<tr> 
<td> 
<b>Plaatje:</b> <? echo "$imagenr" ?>
<br> 
<br> 
<b>Maximaal:</b> <? echo "$possible_size"; ?> kb 
<br> 
<b>Extensies:</b> 

<? 
for ($i = 0; $i < $count_possible_extensions; $i++ ) 
{  
echo $possible_extensions[$i] . "&nbsp;&nbsp;";  
}  

?>   
<br> 
<br> 
<input type="file" name="plaatje" size="40"> 
<br> 
<br> 
<input type="hidden" name="case" value="2"> 
<input type="submit" value="Upload"> 
</td> 
</tr> 
</table> 
</form> 
<? 
break; 

case 2: 

if(!$_FILES[plaatje]) 
{ 
echo"Je hebt geen plaatje geselecteerd"; 
} 
if($_FILES[plaatje]) 
{ 
$file_size = round($_FILES[plaatje][size] / 1024); 
$file_type = $_FILES[plaatje][type]; 
$file = basename($_FILES[plaatje][name]); 
$ext = explode(".", $file); 
$file_extension = $ext[1]; 
$file_name = $ext[0]; 

if($file_size > $possible_size) 
{ 
echo "<b>Fout:</b> Uw plaatje is groter dan <b>$possible_size</b> kb"; 
} 
if (!in_array(strtolower($file_extension),$possible_extensions)) 
{  
echo "<b>Fout:</b> Uw plaatje is niet van het type: "; 

for ($i = 0; $i < $count_possible_extensions; $i++ ) 
{  
echo "<b>$possible_extensions[$i]<b>&nbsp;&nbsp;";  
}  

} 
else 
{ 

// De naam van de file veranderen in bv. artikel_pic0 

$file_name = "001";    
$n = 0;  
$temp_name = $file_name;  



if(move_uploaded_file($plaatje, $path . $file_name . "." . JPG)) 
{ 
echo"De foto <b>$file</b> van <b>$file_size</b> kb, met de extensie <b>$file_extension</b> is geupload naar <b>$path</b> als <b>$file_name</b>"; 
} 
else 
{ 
echo"Het uploaden van <b>$file</b> is niet gelukt"; 
} 
} 
} 
break; 
} 
?>

Maar waar ik tegen aan loop is ik wil op een bepaalde plek de foto dan zichtbaar wordt op de website.
nu weet ik je met een ".htaccess" bestand een pad kan oproepen, maar ik weet niet naar welke pad ik zoek.
Die foto's worden ergens geüpload, maar komt dit in een map, of zweeft het op internet ergens... ik zie het niet zo goed waar die dan staat.

De bedoeling is straks iedere gebruiker zijn foto kan wijzigen door te uploaden met hulp van bovenstaande script (of soort gelijke)
En dit staat dan meteen goed op zijn profiel. (foto automatisch gewijzigd)

Hoe pak ik dit precies nu verder aan?

b.v.d. voor de hulp!
 
Wat is nu concreet je vraag?
Je hebt toch al een path?
 
Laatst bewerkt:
Je hebt toch al een path?

juist niet! ("nu weet ik je met een ".htaccess" bestand een pad kan oproepen, maar ik weet niet naar welke pad ik zoek.")

Probleem is hij ergens ze upload.... maar waarheen?
Ik moet een soort pad/url/locatie hebben waar die geuploade foto staat.....

een foto plaatsen met een <img... lukt wel... maar die foto moet straks gewijzigd worden door ik 1 upload.

stap 1= ik klik op bestand kiezen
stap 2= ik kies een bestand uit mijn verkenner (die aan de voorwaarde voldoet)
stap 3= hierna klik ik op "uploaden"

maar dan? .....

de foto is geupload "joehoeeeeee" :love: maar waar staat die dan?:shocked:
Er is geen url of wat dan ook zichtbaar, en er komt nu dan te staan "Geen gekozen bestand"

Dus simpel de vraag: Ik wil de foto gewijzigd hebben door ik er 1 upload maar geen idee welke pad ik naar zoek.
Elke foto is anders, maar dit moet automatisch gewijzigd worden ipv elke keer de bron handmatig ernaar toe wijzigen.

dus wat is mijn pad ernaar toe met deze tool?
 
Laatst bewerkt:
Geen pad?
Wat is dit dan? ;-)

$path = "/var/www";
 
Dat is het pad op je server. Waar de URL is moet jezelf even uitflooien, maar staat los van het uploaden.

Met een testbestand pad.php kan je uitvogelen wat de webroot is. Als je dit bestand in een aparte directory plaatst in je webroot, moet je een duidelijk aanknopingspunt vinden.
PHP:
 <?php
echo $_SERVER['DOCUMENT_ROOT'];
?>
 
Laatst bewerkt:
<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

Dus ik moet een .htaccess bestand uploaden en vervolgens naar de foto zoeken en dit als url gebruiken waar de foto wordt weer gegeven?

"Waar de URL is niet jezelf even uitflooien." >> want dat is wat ik al hele tijd mee bezig houdt zonder enige suc6:o
 
Dit heeft allemaal niks met htaccess te maken. Dat dient enkel maar voor beveiliging en diverse configuratie.

Bestand pad.php aanmaken, uploaden, uitvoeren, en je ziet het pad.
 
Laatst bewerkt:
Ik snap wel wat ik moet doen.....

Bestand pad.php aanmaken, uploaden, uitvoeren, en je ziet het pad.

maar ik zie geen foto staan op de url: "/home/username/domains/mijneigensite.nl/private_html"

En de plaats waar mijn originele foto staat is zoiets: https://www.mijneigensite.nl/afbeeldingen/foto.png
die wil ik gewijzigd hebben... ik moet toch een url hebben waar de gewijzigde pad staat?

ik snap er compleet niets van wat ik moet doen aan de volgende stap.... Hoe plaats ik de pad van de geüploade foto?
 
Dit is GEEN url maar een pad:
"/home/username/domains/mijneigensite.nl/private_html"

Dus probeer eens:
/home/username/domains/mijneigensite.nl/private_html/afbeeldingen
 
Dus probeer eens:
/home/username/domains/mijneigensite.nl/private_html/afbeeldingen

Wederom niets aan deze info, ik kan toch niets met die pad.

****************************************************************************************
VOORBEELD:

https://www.melodyexpress.nl/afbeeldingen/foto.png zit dus in een map "afbeeldingen"
deze foto wil ik wijzigen ZONDER in de map deze te wijzigen.
ik wil dit met het uploaden van een nieuwe foto gewijzigd hebben!

1= dus ik ga eerst naar de pagina waar ik mijn foto kan uploaden: https://www.melodyexpress.nl/upload.php
2= vervolgens geef ik bij bestand kiezen de juiste foto in .jpg (b.v. mijnfoto.jpg) en klik erna op upload.

3= nu staat er "Geen bestand gekozen"

4= Nu ga ik terug naar: https://www.melodyexpress.nl/afbeeldingen/foto.png maar hij is dus niet gewijzigd!

ik snap dus totaal niet wat ik moet wijzigen/veranderen/aanpassen waar de gewijzigde foto staat.
Zelfs als ik de pad /var/www wijzig gebeurt er niets!
 
Laatst bewerkt:
Dat uploadscript werkt prima, en dat pad is voor jou een goede leidraad waar jouw bestanden zijn geplaatst/geupload op de webhostingserver.

Voor zover ik kan zien in de ontwikkelaars-tools van mijn browser (dikke aanrader om die erbij te pakken en om je erin te verdiepen) worden de foto's netjes verstuurd naar je PHP-script die dit in de juiste map zet. Het feit dat je 'geen bestand geselecteerd' ziet, komt voort omdat je deze uploadpagina opnieuw aanroept, waarna die weer klaar staat voor een volgende upload. Het is niet eens een foutmelding.

Het is wel netjes om na je $_POST een leuke melding te plaatsen met: "Dankjewel! De upload is gelukt."
Nu laat je gebruikers in het ongewis of de upload nu wel of niet gelukt is.

Oplossing: Vul het juiste pad in waar je bestanden geüpload staan.
Geen idee wat je nu hebt.

En zet je foutafhandeling op maximaal.

Goede tip:
Gebruik <?php i.p.v. <?

Short-tags kan een hosting-beheerder uitschakelen, en dan liggen je scripts op straat.
En volgens mij worden short-tags in de toekomst (ver of dichtbij) uit PHP verwijderd.

Daarnaast mag je script wel wat overzichtelijker gemaakt worden met tabs.
 
Laatst bewerkt:
Het lijkt mij dat de info van @aar goed is.

Maak mapje "afbeeldingen" aan op de website.
Verander dit in je script
PHP:
$path = "/home/username/domains/mijneigensite.nl/private_html/afbeeldingen";
waarbij je denk ik username en mijneigensite.nl moet aanpassen in jouw gegevens.

De url is dan https://www.mijneigensite.nl/afbeeldingen/______.jpg
 
Laatst bewerkt:
ik geef op, want hij toont totaal niets:rolleyes:

Opgeven is wat je juist nooit moet doen. Daar leer je niks van! ;)

Wat gebeurt er dan precies na het uploaden?
En wat heb je al geprobeerd?
Heb je al gekeken naar de error array? (https://www.php.net/manual/en/features.file-upload.errors.php)

Want ik zie ook weinig tot geen foutafhandeling, dus dan is het inderdaad gissen wat er fout gaat. Totdat je zelf wat foutmeldingen toepast.
Dan kan je precies traceren wáár het mis gaat.
 
Laatst bewerkt:
Opgeven is wat je juist nooit moet doen. Daar leer je niks van! ;)

Wat gebeurt er dan precies na het uploaden?
En wat heb je al geprobeerd?

tja is misschien ook zo van t lukt niet dus stop ermee, zo leren we nooit fietsen (maar een term)

Probleem is simpel:

Ik zie heel erg duidelijk hij een afbeelding uit me verkenner pakt en dan de titel van het plaatje is zichtbaar.....
maar zodra ik op de knop "upload" klikt, staat er "geen afbeelding beschikbaar" (logisch de pagina herlaadt weer voor een nieuwe afbeelding)
maar hij wordt totaal nergens weer gegeven.

geen locatie
geen afbeelding
geen url
niets maar dan ook niets is er zichtbaar.....

waar is de afbeelding? ik upload hem toch via de knop!?! >> enorm frustrerend dit.
moet misschien deze pagina is proberen: https://www.w3schools.com/php/php_file_upload.asp

edit: maar dan nog, waar staat de geüploade afbeelding als ik hem upload?????
 
Laatst bewerkt:
Ik weet ook niet waar je afbeelding is. Wat heb je nu al pad dan ingesteld?
Bestaat dat pad wel?

PHP doet echt wat jij vertelt, maar als je niet duidelijk genoeg bent door te zeggen dat hij een melding moet geven als het gelukt is, en wat hij moet aangeven als het niet gelukt is...dan weet je alsnog weinig.

Dus bouw je script eens uit met foutmeldingen en controles.

PS: Het is leuk om bij het begin te beginnen, maar zorg dat je wel een veilige upload hebt. Als je niet op extenties en mime-types controleert, dan kan elke persoon een bestand met de naam gevaarlijk-script.php uploaden. En dan zijn de gevaren niet te overzien.

Je huidige script is wel veilig, maar mist gewoon een hoop controles en foutmeldingen.
Dus probeer die eens in te bouwen. Dan weet je wat er misgaat. Misschien is het wel iets heel simpels.
 
Laatst bewerkt:
see
https://www.php.net/manual/en/function.move-uploaded-file.php

vermoedelijk heb je het bestand niet naar een locatie verplaatst
Het is een soort beveiliging als er iets mis zou gaan en de apache dient te herstarten zijn deze verloren...
dus moet je eerst controles toepassen en dan pas verplaatsen als je het iets veilig wil houden ... zie ook opmerkingen hierboven die dit ook vermelden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan