[PHP] absolute url naar bestand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
Als je een afbeelding upload naar theforumisdown.com krijg je automatisch een url te zien naar je afbeelding (bijv: http://www.theforumisdown.com/uploadfiles/0103/3dfoto.jpg)

nu heb ik zelf een uploadscript geschreven in php (niet voor mijn icon maar voor een andere site) en deze test ik dus op MIJN server, nu wil ik php de url naar het plaatje laten genereren maar wil niet het script editen als ik hem naar een andere server verplaats (zelfs de map mag niets uitmaken)

ik weet wel hoe ik de naam van het geuploade bestand kan weergeven (en deze wordt met move uploaded file naar ../images/upload/ gekopieerd) nu vraag ik me dus af hoe ik dus een absolute url naar dit bestand genereer er van uitgaande dat er zich meer directories achter de host bevinden www.helmet.nl/bla/test/images/upload/bestand.img bijvoorbeeld

In de search kon ik hier niets over vinden (maar misschien gebruik ik de verkeerde zoektermen)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?
session_start();
require_once('../php/hlayer.php');
require_once('../php/class.TemplatePower.inc.php');
# Template initialiseren
$tp = new TemplatePower( "upload.htm" );
$tp->prepare();
$tp->assign('self',$_SERVER['PHP_SELF']);

# Controleren of de gebruiker wel rechten heeft
if (isSet($_SESSION['user'])) { $user = $_SESSION['user']; }
if ($user['login'] != 1) { $tp->newblock('notloggedin'); }
if (!isSet($_FILES['image']) && $user['login'] == 1) { $tp->newblock('showupload'); }
else
{
 # De eigenlijke upload
 if ($_GET['action'] == 'doupload')
 {
  $allowed = array('image/jpeg','image/jpg','image/gif','image/pjpeg','image/png');
  if (!in_array(strtolower($_FILES['image']['type']),$allowed)) { $tp->newblock('novalidfile');  }
  $file = $_FILES['image']['tmp_name'];
  if (is_file('../images/upload/' . $_FILES['image']['name'])) { $tp->newblock('fileexists'); }
  else
  {
   if (@move_uploaded_file($file,'../images/upload/' . $_FILES['image']['name']))
   {
    $tp->newblock('doneuploading');
    /* Hier wil ik dus het absolute pad toevoegen maar zoals
        al eerder aangegeven wil ik graag dat dit op elke host zonder
        enige wijziging werkt op het moment lees ik alleen de filename uit
   */
    $tp->assign('bestand',$_FILES['image']['name']);
   }
   else
   {
    # Mocht er iets foutgaan? Foutmelding ! :)
    $tp->newblock('error');
   }
  }
 }
}
$tp->printtoscreen();
?>

[ Voor 45% gewijzigd door Helmet op 06-10-2003 17:49 . Reden: code toegevoegd ]

Icons are overrated


Acties:
  • 0 Henk 'm!

Verwijderd

zet de abs. root path in een configuratiefile en concat die met de filename...
of denk ik te makkelijk?

misschien is het handig als je je huidige code er even bij zet?

Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Gewoon met PHP_SELF ed ?

edit:
code:
1
2
3
<?
$path = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']."; 
?>

[ Voor 68% gewijzigd door flashin op 06-10-2003 18:00 ]


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
flashin schreef op 06 October 2003 @ 17:56:
Gewoon met PHP_SELF ed ?

edit:
code:
1
2
3
<?
$path = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']."; 
?>
Dit gaat niet werken omdat $_SERVER['PHP_SELF'] verwijst naar het bestand zelf (upload.php) maar omdat ik wil dat hij linkt naar ../images/upload/ is dat hier n iet de oplossing ik zag zelf ook al $_SERVER['host'] maar nu zou ik eigenlijk ook nog de directories (die voor upload.php zitten) nodig hebben.

Icons are overrated


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
dan zul je hem moeten exploden op de / en dan 'poppen' [mixed array_pop ( array array)]

edit:

:)

en aangezien je ../images/upload wilt bereiken kun je array_pop dus 2 x doen, zie geen manier om die functie 1 keer uit te voeren.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<? 

    $path = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; 
    $path = explode("/", $path); 

    array_pop($path); 

    $path = @implode($path, "/"); 

    print $path . "/"; 

?> 


edit:
hm lol nu al 118% edit :x

[ Voor 134% gewijzigd door flashin op 06-10-2003 18:27 . Reden: foutje ;) ]


Acties:
  • 0 Henk 'm!

Verwijderd

idd, PHP_SELF is generiek. Je kunt de string van PHP_SELF ook editten en zo de gewenste URL maken...(e.g. bestandsnaam eraf halen)

Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
flashin schreef op 06 oktober 2003 @ 18:17:
dan zul je hem moeten exploden op de / en dan 'poppen' [mixed array_pop ( array array)]

edit:

:)

en aangezien je ../images/upload wilt bereiken kun je array_pop dus 2 x doen, zie geen manier om die functie 1 keer uit te voeren.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<? 

    $path = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; 
    $path = explode("/", $path); 

    array_pop($path); 

    $path = @implode($path, "/"); 

    print $path . "/"; 

?> 
Deze methode werkt zonder problemen :) bedankt voor je moeite

Icons are overrated

Pagina: 1