[PHP] File Upload Script werkt niet

Pagina: 1
Acties:

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Ik heb het volgende script:

code:
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
<?php 

if ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST') { 
if (!@move_uploaded_file($HTTP_POST_FILES['mijn_bestand']['tmp_name'],
 
'http://cgi-bin.spaceports.com/~ottema/DE/fotos/mijn_bestand')) { 
die ("didn't work."); 
} 

die ("done."); 
} 

?> 

<html> 
<head> 
<title>bla</title> 
</head> 
<body bgcolor="#FFFFFF"> 
<form enctype="multipart/form-data" method="post" action="<?php echo 
$HTTP_SERVER_VARS['PHP_SELF']; ?>"> 
<input type="file" name="mijn_bestand"><br> 
<input type="submit" value="Uploaden"> 
</form> 
</body> 
</html>


Maar ik krijg elke keer "Didn't work" en ik snap niet waar het aan kan liggen. Ik heb de map 'fotos' chmod 777 gegeven dus hij is toegankelijk. Ik draai het op spaceports dus ik weet niet precies welke php versie er daar op staat

Verwijderd

Je moved het bestand naar een http://... adres. Dat betekent dat hij wil schrijven naar een http-URL. Dat kan natuurlijk niet. Je moet daar het lokale pad invoeren, bijvoorbeeld './mijn_bestand', of 'fotos/mijn_bestand'. Snap je?

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Ook als ik dat heb veranderd werkt het nog steeds niet. trouwens nog een vraagje: ik heb de volgende dir structuur:

--fotos
|
--scripts

in scripts staat het script. Als ik de bestanden nou in fotos wil gooien dan doe ik dat toch met ./fotos/mijn_bestand

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

haal die @ eens weg voor de move en post de exacte error...

If nothing is written below, I was the last to reply...


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
De exacte error is dat ik 'didn't work.' krijg te zien, oftewel de 'die' word uitgevoerd

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

RainManX schreef op 27 augustus 2002 @ 15:19:
haal die @ eens weg voor de move en post de exacte error...
Als je dit had gedaan, dan kreeg je de ECHTE error, dus diegene gegenereerd door PHP... die @ blokkeert namelijk foutmeldingen... dus haal die @ weg, en post de foutmelding...

Oh, en het antwoord hierop:
in scripts staat het script. Als ik de bestanden nou in fotos wil gooien dan doe ik dat toch met ./fotos/mijn_bestand
is nee.

je moet '../fotos/mijn_bestand' hebben...

If nothing is written below, I was the last to reply...


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Ook als ik de @ weghaal staat er gewoon didn't work

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 01-09 13:54

Crazy D

I think we should take a look.

Zoals al gezegt, je moet 'm niet naar een http:// adres laten moven.
../fotos/naam.jpg dus

Exact expert nodig?


  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

emkedouwe schreef op 27 augustus 2002 @ 17:09:
Ook als ik de @ weghaal staat er gewoon didn't work
Dan is het dus dat de bestandnaam niet goed is...
If filename is not a valid upload file, then no action will occur, and move_uploaded_file() will return FALSE.

If filename is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return FALSE. Additionally, a warning will be issued.
Misschien handig je filename even te echo'en om het te controleren?

Als je PHP 4.2.0 of hoger gebruikt, echo dit eens:
code:
1
$_FILES['userfile']['error']

The error code associated with this file upload. ['error'] was added in PHP 4.2.0

(PS: Indien PHP 4.1.0 of nieuwer: gebruik $_FILES ipv $HTTP_POST_FILES)

If nothing is written below, I was the last to reply...


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Wat ik ook probeer er blijft staan: 'didn't work' geen andere errors. vet vaag. Is er mischien ook een andere manier om files te uploaden ??

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

error reporting opschroeven

Doet iets met Cloud (MS/IBM)


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

UTFE(E_ALL)

voor uitleg zie: http://gerard.yoursite.nl/got/php-tiplist/#1 ;)
geloof jij mij, dat is echt beter, ook al schrik je in het begin misschien van de errors.

lees vervolgens deze en deze ook even door.

Die tips even toepassen, en dan met een duidelijke beschrijving van wat er fout gaat terugkomen :*

offtopic:
vervelend om met je eigengeschreven rotzooi te moeten spammen :/

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Cruz
  • Registratie: November 1999
  • Laatst online: 17-10-2025
Misschien staat file uploading uitgeschakeld in je php.ini file?

Standaard :


;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = Off

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Maar ik zal wel niet ff de php.ini van spaceports mogen editen :(

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

dan zal je spaceports even aan de mouw moeten trekken.

Je kunt de setting van een directive uit de php.ini wel uitlezen met http://www.php.net/init-get of http://www.php.net/get-cfg-var

mocht file_uploads dan uit staan, moet je even bij spaceports langs, anders is het verder debuggen geblazen :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Scriptje hier getest met EasyPHP...
1: duidelijke foutmelding wanneer de @ is weggelaten.
2: in plaats van volledig pad een filename 'foo' gebruikt.
3: Done! wel even zoeken naar het bestand. Werd bij mij in de Apache dir geplaatst, zal wel met EasyPHP config te maken hebben.


In plaats van $PHP_SELF gebruik ik een variabele als volgt gedeclareerd:
PHP:
1
$self = basename( $PHP_SELF);

Zo krijg je een relatieve link ipv een absolute.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Volgens mij moet je ook nog een maximale grootte veld opnemen in je formulier. Iets met max-file-size ofzo. Voor de preciese naam moet je ff op php.net kijken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Janoz:
Volgens mij moet je ook nog een maximale grootte veld opnemen in je formulier. Iets met max-file-size ofzo. Voor de preciese naam moet je ff op php.net kijken.
Die 's niet verplicht hoor :)
jasperdg:
Zo krijg je een relatieve link ipv een absolute.
Not entirely correct :) Deze functie haalt de bestandsnaam uit een path:
PHP:
1
2
3
$path = "/home/jasperdg/www/blaat.html";
echo basename ( $path );     // produceert "blaat.html"
echo basename ( $PHPSELF );  // produceert bestandsnaam huidige bestand


die op regel 2 blijft altijd gewoon 'blaat.html' produceren, ongeacht in welke directory 't script uitgevoerd wordt. Is dus niet een relatief pad, tenzij het script in dezelfde directory staat als het argument van basename.

En in 't geval $PHP_SELF gaat dat inderdaad altijd op, logischerwijs ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1