Bestanden uploaden

Status
Niet open voor verdere reacties.

lollige

Gebruiker
Lid geworden
13 nov 2005
Berichten
951
Ik krijg het niet voor elkaar om bestanden up te loaden via een form.. :confused:

na eigen pogingen heb ik om fouten te voorkomen mijn script zo'n beetje rechtstreeks van php.net gekopieerd, maar zelfs dat hielp niet..
http://nl3.php.net/manual/en/features.file-upload.post-method.php

PHP:
<?php
require_once 'incl/admincheck.php';
if (admincheck(2)) {
	echo'No permission';
	ob_clean();
	header('Location: index.php?page=admin');
	exit;
}
if($_POST) {
$uploaddir = '/templates/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is succesfully uploaded!";
} else {
    echo "There is a problem with the file upload. ";
}

echo 'Here is some more debugging info:'; //this is just temporarily for testing uses.
print_r($_FILES);


}
?>
<script type="text/javascript">
window.onload = function() {
	document.getElementById('name').focus();	
}
</script>
Create new collab
<form action='index.php?page=newcollab' enctype="multipart/form-data" method='post'>
Name: <input type='text' name='name' id='name' /><br />
Description:<br>
<textarea rows="5" cols="50" wrap="physical" name="description">
</textarea><br />
Template:    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="userfile" type="file" />

<br />
<input type='submit' value='Start new collab!' />
</form>

Alles is nog volledig onbeveiligd, dat snap ik. De pagina die je hier ziet is newcollab.php dat in een submap van mijn hoofddirectory zit. Index.php zit in de hoofddirectory en door middel van include word dit bestand in index.php geplakt.
Ik heb in mijn hoofddirectory een mapje /templates/.
De error die ik krijg is alsvolgt:


Code:
Warning: move_uploaded_file(/templates/atardecerdelroninbylol.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp2\htdocs\pixelpax\page\newcollab.php on line 14

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp2\tmp\php5E.tmp' to '/templates/atardecerdelroninbylol.gif' in C:\xampp2\htdocs\pixelpax\page\newcollab.php on line 14
There is a problem with the file upload. Here is some more debugging info:Array ( [userfile] => Array ( [name] => atardecerdelroninbylol.gif [type] => image/gif [tmp_name] => C:\xampp2\tmp\php5E.tmp [error] => 0 [size] => 11578 ) ) Create new collab

Ik zie ook na het uploaden het bestand 'C:\xampp2\tmp\php5F.tmp' niet verschijnen :/
CHMOD staat op de map templates (sowiso op de volledige website directory) op 777.

Wat moet ik doen om dit werkend te krijgen, zodat ik verder kan met mijn script? (beveiligen, bestandslocatie en naam etc in database schrijven...)
 
Het probleem is opglost, maar er blijft een vraag:
De fout bleek hier in te zitten:

PHP:
$uploaddir = '/templates/';
Dit moest
PHP:
$uploaddir = 'templates/';
zijn. zonder de / aan het begin dus.

Dit heb ik bij toeval ontdekt, en ik zou nu graag nog willen weten wat het verschil tussen die twee dingen is.:o

Wat maakt het uit of ik /templates/ of templates/ schrijf?
 
Als je vooraan een relatief pad een / zet, vraag je om in de serverroot te gaan zoeken (in jouw geval vermoedelijk C:\xampp2\ ).
Wanneer die er niet staat is het een relatief pad ten opzicht van je huidige directory
 
oke, bedankt voor je antwoord! :)

Ik zal het onthouden om zulke bugs in het vervolg te voorkomen!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan