eenvoudige vraag, pad naar het php bestand
Ik heb een upload scriptje geschreven, ik wil de uploader de url naar het geüploade bestand laten zien. Vreemd genoeg blijkt dit niet zo vanzelfsprekend. (voor mij toch niet)
Ik heb al geprobeerd met ale het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$_SERVER['HTTP_HOST']
$_SERVER['DOCUMENT_ROOT']
$_SERVER['SERVER_NAME']
$_SERVER['SCRIPT_FILENAME']
$_SERVER['SCRIPT_NAME']
$_SERVER['PHP_SELF']
getcwd()
?>
$_SERVER['HTTP_HOST']
$_SERVER['DOCUMENT_ROOT']
$_SERVER['SERVER_NAME']
$_SERVER['SCRIPT_FILENAME']
$_SERVER['SCRIPT_NAME']
$_SERVER['PHP_SELF']
getcwd()
?>
Uiteraard verwijzen deze allemaal naar het php bestand dat de upload doet, niet naar het geüploade bestand. Maar zelfs hier krijg ik er niet uit wat ik wil. het php bestand staat bijvoorbeeld hier:
http://www.artexanis.be/uploadscript/upload.php.
Ik zou nu een output moeten hebben in deze stijl:
http://www.artexanis.be/uploadscript/
Dan kan ik er de upload-directory (bepaald in een var) en de filename erachter plakken en dan heb ik de url naar het bestand. Dat is het plan, nu de uitvoering....
Een geuploaded bestand komt in de tmp-dir te staan. Deze staat in $_FILES.
Ik neem aan dat je $_FILES["file"]["tmp_name"] bedoeld. Maar deze info geeft mij het pad van het bestand op de server, zoiets als dit:
/var/www/vhosts/artexanis.be/subdomains/moulindurivage/httpdocs enz...
plus dat is niet de locatie waar het bestand blijft staan, want verder doe ik dit:
Code (php)
1
2
3
2
3
<?php
$upload=move_uploaded_file($_FILES["file"]["tmp_name"],$filedir.$_FILES["file"]["name"]);
?>
$upload=move_uploaded_file($_FILES["file"]["tmp_name"],$filedir.$_FILES["file"]["name"]);
?>
Hoe kan ik nu de url naar het geüploade bestand laten zien?
$filedir.$_FILES["file"]["name"]
Zo genereer ik de URL nu:
Dit geplaatst in het voorbeeld uit mijn eerste post:
Mijn upload script bevind zich hier:
http://www.artexanis.be/uploadscript/upload.php
mijn upload directory is
upload/
het bestand dat ik upload is test.txt
Dit is het resultaat van mijn url:
http://www.artexanis.be/upload/test.txt
Dit moet zijn:
http://www.artexanis.be/uploadscript/upload/test.txt
Ik weet dat het opgelost is als ik van mijn upload directory dit maak:
/uploadscript/upload/
met een / in het begin om terug te vertrekken van root.
Maar het idee is dat ik het script samen met de map 'upload' kan verplaatsen naar een andere map zonder dat ik iets moet veranderen.
Code (php)
1
2
3
4
2
3
4
<?php
$arr = explode('/', __FILE__, -1);
$url='http://' . $_SERVER['HTTP_HOST'] . $arr[0] . '/' . $filedir . $_FILES['file']['name'];
?>
$arr = explode('/', __FILE__, -1);
$url='http://' . $_SERVER['HTTP_HOST'] . $arr[0] . '/' . $filedir . $_FILES['file']['name'];
?>
Ik zit inderdaad ook met het gevoel dat dit ongetwijfeld eenvoudiger moet kunnen, ik heb net uw voorstel uitgeprobeerd, maar het probleem blijft hetzelfde...