Hoi...

Zouden jullie eens met me mee willen kijken aub? Ik zal het ongetwijfeld niet goed doen hoor... weet ik. maar ik kom met zoekopdrachten op het web toch uit op onderstaande. Ik wil graag een foto uploaden. Nu wordt de naam van de foto keurig opgeslagen in de database. MAar het bestand wordt van de temp niet verplaatst naar de folder waar die moet komen. Deze blijft gewoon leeg. Krijg ook geen error melding oid. Maar zit 'm de crux? Geen idee... Julie vast wel ;-)

Op voorhand bedankt voor het meedenken,
Dirk

[code]
function berichttoevoegen(){
global $MySQL;

if (isset($_POST['submit'])) {

$pageNaam = mysqli_real_escape_string($MySQL, $_POST['page-onderwerp']);
$pageData = mysqli_real_escape_string($MySQL, $_POST['page-bericht']);
$pageGebruikerId = mysqli_real_escape_string($MySQL, $_POST['page-gebruikerId']);

$pageFoto = $_FILES['page-foto']['name'];
$profile_tmp = $_FILES['page-foto']['tmp_name'];
$img_folder = "img/berichten/";
move_uploaded_file($profile_tmp, $img_folder.$pageFoto);


$aanmaken = "INSERT INTO page

(pageNaam, pageData, pageFoto, pageGebruikerId)

VALUES

('$pageNaam', '$pageData', '$pageFoto', '$pageGebruikerId')";

if (mysqli_query($MySQL, $aanmaken)){
echo '<p><h1>Er is een nieuw bericht toegevoegd aan de database</h1>';
}else{
echo 'Sorry,'.mysqli_error($MySQL);
}
}

?>
[code]
<form action="?module=beheer&actie=berichttoevoegen" method="post" enctype="multipart/form-data">
<table cellpadding="5" border="0">
<tr>
<td colspan="2"><font color="green" size="4" face="comic sans ms">Bericht toevoegen</font></td>
</tr>
<tr>
<tr>
<td>Onderwerp</td>
<td><input type="text" name="page-onderwerp" size="40%" required="required"></td>
</tr>
<tr>
<td>Bericht</td>
<td><textarea rows="8" cols="35" name="page-bericht"></textarea></td>
</tr>
<tr>
<td>Foto</td>
<td><input type="file" name="page-foto"></td>
</tr>
<tr>
<td></td>
<td>
<input type="hidden" name="page-gebruikerId" value="<?php echo $_SESSION['loginId']; ?>">

</td>
<tr>
<td><input type="submit" name="submit" value="Opslaan"><a href="?module=beheer"><input type="button" value="Annuleren"></a></td>
</tr>
</table>
</form>
<?php

}
Check goed of de map bestaat en of deze wel schrijfrechten (chmod) heeft.
Ik zou gebruik maken van mkdir. Als de map niet bestaat wordt deze gemaakt en je kunt gelijk de rechten meegeven.
Sowieso zou ik aanraden om een if-else controle te plaatsen op move_uploaded_file().
Straks gaat er wat mis, en staan foutmeldingen uit, en staat iedereen raar te kijken dat zijn bestand niet geüpload is.
Michael - op 20/11/2018 20:17:48

Check goed of de map bestaat en of deze wel schrijfrechten (chmod) heeft.
Ik zou gebruik maken van mkdir. Als de map niet bestaat wordt deze gemaakt en je kunt gelijk de rechten meegeven.


Hoi Michael,
De map bestaat. Inmiddels tig keren gecontroleerd. Vooralsnog is het een lokale map op mijn laptop.

[size=xsmall]Toevoeging op 20/11/2018 20:37:42:[/size]

- Ariën - op 20/11/2018 20:20:51

Sowieso zou ik aanraden om een if-else controle te plaatsen op move_uploaded_file().
Straks gaat er wat mis, en staan foutmeldingen uit, en staat iedereen raar te kijken dat zijn bestand niet geüpload is.



Hoi Ariën,
Ik had oorspronkelijk een if-else ingebakken. Ik had een msg bij zowel als het bestand goed is verplaatst maar bij een niet gelukt upload een melding dat er iets mis is gegaan.
Zelfs deze handling werkt niet. Ik kreeg geen van beide berichten te zien. Dus ik heb deze er even tussen uitgeslootp om de codering zo klein mogelijk te krijgen om te kijken waar ik de mist inga
En als je de $img_folder even absoluut maakt, dus bijvoorbeeld "c:/ergens/". Komt ie dan wel op z'n plek?

Nog een melding in het errorlog? Of laat alle foutmeldingen op het scherm verschijnen:

ini_set('display_errors',true);
error_reporting(E_ALL);
Rob Doemaarwat op 20/11/2018 21:06:27

En als je de $img_folder even absoluut maakt, dus bijvoorbeeld "c:/ergens/". Komt ie dan wel op z'n plek?

Nog een melding in het errorlog? Of laat alle foutmeldingen op het scherm verschijnen:

ini_set('display_errors',true);
error_reporting(E_ALL);



een absolute padverwijzing geeft vooralsnog ook nog niet de solution.
het is me niet duidelijk waar ik die error reporting code moet plaatsen. Ik heb 'm nu net boven de move_uploaded_file() geplaatst... maar je raad het al. d'r gebeurt niets :-)


[size=xsmall]Toevoeging op 20/11/2018 21:51:04:[/size]

Rob Doemaarwat op 20/11/2018 21:06:27

En als je de $img_folder even absoluut maakt, dus bijvoorbeeld "c:/ergens/". Komt ie dan wel op z'n plek?

Nog een melding in het errorlog? Of laat alle foutmeldingen op het scherm verschijnen:

ini_set('display_errors',true);
error_reporting(E_ALL);



een absolute padverwijzing geeft vooralsnog ook nog niet de solution.
het is me niet duidelijk waar ik die error reporting code moet plaatsen. Ik heb 'm nu net boven de move_uploaded_file() geplaatst... maar je raad het al. d'r gebeurt niets :-)
En als je dit rond de move_uploaded_file(...) doet:

print("VOOR move_uploaded_file($profile_tmp, $img_folder.$pageFoto)");
$result = move_uploaded_file($profile_tmp, $img_folder.$pageFoto);
print("NA move_uploaded_file($profile_tmp, $img_folder.$pageFoto) = $result");
Rob Doemaarwat op 20/11/2018 22:59:53

En als je dit rond de move_uploaded_file(...) doet:

print("VOOR move_uploaded_file($profile_tmp, $img_folder.$pageFoto)");
$result = move_uploaded_file($profile_tmp, $img_folder.$pageFoto);
print("NA move_uploaded_file($profile_tmp, $img_folder.$pageFoto) = $result");



dan is onderstaande het resultaat:

VOOR move_uploaded_file(, img/berichten/.DPP_0021.JPEG)
NA move_uploaded_file(, img/berichten/.DPP_0021.JPEG) =
Zoals @Michael aangaf is het bestaan van een directory alleen niet genoeg, deze moet ook de juiste schrijfrechten hebben.

Die directory "img/berichten" kan volgens jou wel bestaan, maar dat moet het systeem ook vinden.

Controleer anders een wat dingen met is_dir() en/of is_writable().
$profile_tmp is dus leeg. Dat zou betekenen dat $_FILES['page-foto']['tmp_name'] leeg is, en er dus iets fout gegaan is bij het uploaden.

Doe eens
print_r($_FILES);

Kijken of er een error in zit (of wat er uit de rest is af te leiden).

(het feit dat er "niks" achter de "=" staat betekent dat het resultaat van move_uploaded_file() false is, er wordt dus inderdaad niks verplaatst)
Hey guys, eea heeft klaarblijkelijk met de bestandsgrootte van de foto zelf te maken. Deze was in oorspronkelijk formaat 3888 x 2592 pixels en 5.25 MB. Nadat ik die in Photoshop heb gehalveerd in pixesl naar 1944 x 1296 pixels en 1.75 MB werkt de move_uploaded_file() dus prima... Nu ik dit weet kan ik hier dus een check voor inbouwen en kan ik if-else weer terugzetten...

Ieder bedankt voor het meedenken .....

Reageren