[php] probleem met uploaden

Pagina: 1
Acties:
  • 212 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer d.m.v een formpje een plaatje up te loaden a.d.v. deze code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<input type="file" name="foto">
  </p>

en dan deze verwerking:

$is_uploaded = is_uploaded_file($_FILES['foto']['tmp_name']); 

 if ($is_uploaded == "1")
{ 
  $temp_name = $_FILES['my_file']['tmp_name']; 
  $orig_name = $_FILES['my_file']['name']; 
  $new_name = "D:\\www\\xxxxx\\da\\foto\\$orig_name"; 

 echo "File uploaded.\n<br>"; 
 echo "$new_name\n<br>"; 

 move_uploaded_file($temp_name,$new_name); 
}


Voor deze code staat nog een berg andere php welke allemaal wel goed uitgevoerd wordt.
Ik krijg als output wel dat de file is upgeload in de goede directory, maar deze is dan niet in die directory te vinden. :(

Directory staat op 777

[ Voor 15% gewijzigd door Verwijderd op 16-10-2003 19:11 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Volgens mij is $is_uploaded geen string, dus hoeven de quotes er niet om in de IF ..

Maar als je eens de "move_uploaded_file" print, staat er dan wel dat deze TRUE is?
En als je daaronder een IMG tag zet met als source je $new_name?

[ Voor 5% gewijzigd door OkkE op 16-10-2003 19:31 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • grolle
  • Registratie: Oktober 2001
  • Laatst online: 15-09 10:26
[off-topic]
Sorry maar ik moest er metteen aan denken, Ik had ook eens een probleem met een upload script, Bleek de HD vol te zijn |:( |:( |:(
[/off-topic]


van php.net ( http://nl.php.net/manual/nl/features.file-upload.php )
garyds at miraclemedia dot ca
16-Mar-2003 12:12
As it has been mentioned above, Windows-based servers have trouble with the path to move the uploaded file to when using move_uploaded_file()... this may also be the reason copy() works and not move_uploaded_file(), but of course move_uploaded_file() is a much better method to use. The solution in the aforementioned note said you must use "\\" in the path, but I found "/" works as well. So to get a working path, I used something to the effect of:

"g:/rootdir/default/www/".$_FILES['userfile']['name']

...which worked like a charm.

I am using PHP 4.3.0 on a win2k server.

Hope this helps!
Dus ff regeltje 12 van jou voorbeeld aan passen

[ Voor 71% gewijzigd door grolle op 16-10-2003 19:49 ]


Acties:
  • 0 Henk 'm!

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
Staat er misschien een foutmelding in $_FILES['my_file']['error'] ?

| Toen / Nu


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
wat is het verschil tussen?
PHP:
1
$_FILES['my_file']['tmp_name'];

en
PHP:
1
$_FILES['foto']['tmp_name'];


mmmmm en je code kan veel korter/ netter

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
if (is_uploaded_file($_FILES['foto']['tmp_name']) == true)
{
    $new_name = 'D:\www\xxxxx\da\foto\\' . $_FILES['foto']['name'];

    echo "File uploaded.\n<BR />";
    echo $new_name . " \n<BR />";

    move_uploaded_file ($_FILES['foto']['tmp_name'], $new_name);
}
?>

[ Voor 152% gewijzigd door PrisonerOfPain op 16-10-2003 19:57 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

offtopic:
if (is_uploaded_file($_FILES['foto']['tmp_name']) == true)
Dat vind altijd zo vreemd, een if ( .... == true ). Waarom zou je dan in vredesnaam die ==true er nog achter zetten? Zeker in een weaktyped language als PHP is dat echt onzin. Maar dit terzijde :P
[/ot]
SuperRembo:
Staat er misschien een foutmelding in $_FILES['my_file']['error'] ?
Die moet je in ieder geval checken....

Verder kan het geen kwaad om even te kijken of de file die aangemaakt wordt ook wel een file "is" daarna.

code:
1
2
3
4
5
if ( file_exists ( $path_to_where_the_file_should_have_been_uploaded_to ) 
     && is_file ( $path_to_where_the_file_should_have_been_uploaded_to ) 
   ) {
   // ...
}

om ook maar eens "korte en nette" code te schrijven :+

Verder verdient het aanbeveling het bestand na uploaden te chmodden naar 644 (als je op een unix bak zit)

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


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
drm schreef op 16 October 2003 @ 21:05:
code:
1
2
3
4
5
if ( file_exists ( $path_to_where_the_file_should_have_been_uploaded_to ) 
     && is_file ( $path_to_where_the_file_should_have_been_uploaded_to ) 
   ) {
   // ...
}
Dit slaat natuurlijk helemaal nergens op :P

is_file:
Returns TRUE if the filename exists and is a regular file.
file_exists:
Returns TRUE if the file or directory specified by filename exists; FALSE otherwise.
het zou heel anders geweest zijn als er had gestaan

PHP:
1
2
3
<?php
if (file_exists ($pathToFile) && is_file ($pathToFile . $filename)){};
?>


maar dan kon je beter doen
PHP:
1
2
3
<?php
if (file_exists ($pathToFile . $filename){};
?>


offtopic:
dat is (voor mij) een stuk netter en duidelijker :)
BTW wat een f*ck*ng lange post voor zoiets zeg


edit:

RTFM N00b ;)

[ Voor 4% gewijzigd door PrisonerOfPain op 16-10-2003 21:33 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

path_to_iets kan natuurlijk net zo goed een verwijzing naar een bestand als naar een directory zijn, he ;)

En ik was in de veronderstelling dat is_file een foutmelding gaf als het bestand niet bestond :)

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


Acties:
  • 0 Henk 'm!

  • nxt
  • Registratie: November 2001
  • Laatst online: 24-08 15:34

nxt

Verwijderd schreef op 16 October 2003 @ 19:10:...$new_name = "D:\\www\\xxxxx\\da\\foto\\$orig_name";
... Directory staat op 777
weet je zeker dat de rechten van die directory goed staan?
777 en een path dat met d: begint ziet er namelijk nogal ongewoon uit.

edit: wat ik eigenlijk wil zeggen is
777 slaat op *nix en d:\ op windows, dus of je zeker weet dat je de rechten v/d dir op de windows manier ingesteld hebt, en dus niet met chmod o.i.d.

[ Voor 25% gewijzigd door nxt op 16-10-2003 23:20 . Reden: ietsjes duidelijker gemaakt ]


Acties:
  • 0 Henk 'm!

  • Blue_Thunder_NL
  • Registratie: Februari 2000
  • Laatst online: 15-09 20:31
<form enctype="multipart/form-data" method="POST">

Staat dit in je form?

Ik wil zoveel, maar ik doe zo weinig


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nxt schreef op 16 October 2003 @ 23:18:
[...]

weet je zeker dat de rechten van die directory goed staan?
777 en een path dat met d: begint ziet er namelijk nogal ongewoon uit.

edit: wat ik eigenlijk wil zeggen is
777 slaat op *nix en d:\ op windows, dus of je zeker weet dat je de rechten v/d dir op de windows manier ingesteld hebt, en dus niet met chmod o.i.d.
Ik heb de instellingen op 777 gezet, dat kan op de admin site van de hosting van mij. De server kan best windows zijn, maar dan nog kan die op 777 gezet worden.

Verder is mijn HD op de server niet vol en kan het daar niet aan liggen.

De $new_name aanpassen naar D:/www/xxxxxda/foto/$orig_name levert niks op..

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php 
if (is_uploaded_file($_FILES['foto']['tmp_name']) == true) 
{ 
    $new_name = 'D:\www\xxxxx\da\foto\\' . $_FILES['foto']['name']; 

    echo "File uploaded.\n<BR />"; 
    echo $new_name . " \n<BR />"; 

    move_uploaded_file ($_FILES['foto']['tmp_name'], $new_name); 
} 
?> 

werkt ook niet :(

krijg dan deze fout:
Warning: move_uploaded_file(D:\www\xxxxxx\da\foto\Untitled-1.gif): failed to open stream: No such file or directory in d:\www\xxxxxxxxx\www\da\verwerk.php on line 35

Warning: move_uploaded_file(): Unable to move 'c:/temp\phpEC5.tmp' to 'D:\www\xxxxxxxx\da\foto\Untitled-1.gif' in d:\www\xxxxxxxxxxxxx\www\da\verwerk.php on line 35

[ Voor 31% gewijzigd door Verwijderd op 17-10-2003 00:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SuperRembo schreef op 16 October 2003 @ 19:43:
Staat er misschien een foutmelding in $_FILES['my_file']['error'] ?
Deze is 0.
Verder gebruikte ik in de verkeerde code een paar keer my_foto als fileformnaam terwijl dit foto had moeten zijn.
Verandering hielp echter niks, werkt nog steeds niet..

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
D:\www\xxxxxxxx\da\!= d:\www\xxxxxxxxxxxxx\www\da\ dus zeker weten dat dat klopt? geef anders de echte namen eens?

mmmm
Warning: move_uploaded_file(D:\www\xxxxxx\da\foto\Untitled-1.gif): failed to open stream: No such file or directory in d:\www\xxxxxxxxx\www\da\verwerk.php on line 35
dus probeer eens met relative paden

[ Voor 76% gewijzigd door PrisonerOfPain op 17-10-2003 08:46 ]


Acties:
  • 0 Henk 'm!

  • grolle
  • Registratie: Oktober 2001
  • Laatst online: 15-09 10:26
Verwijderd schreef op 17 October 2003 @ 00:27:
[...]

[knip]
Warning: move_uploaded_file(): Unable to move 'c:/temp\phpEC5.tmp' to 'D:\www\xxxxxxxx\da\foto\Untitled-1.gif' in d:\www\xxxxxxxxxxxxx\www\da\verwerk.php on line 35
Unable to move 'c:/temp\phpEC5.tmp'
Ik denk toch dat je de slahses wat nader moet bestuderen


[edit]

Ik heb ff mijn oude upload file opgezocht. (Apache op windows)

PHP:
1
2
$uploaddir = 'D:/Inetpub/NetCare_01/Grolle/arie/Foto\'s/test/upload/';
move_uploaded_file($_FILES['foto']['tmp_name'], "$uploaddir/" .$_SESSION['naam']. "/groot$nummer.jpg");

Dit werkt bij mij

[ Voor 31% gewijzigd door grolle op 17-10-2003 12:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
D: OF d: maakt geen verschil.
Die 'c:/temp\phpEC5.tmp' zit mij ook niet lekker, maar ik zie de fout niet !

Acties:
  • 0 Henk 'm!

Verwijderd

Blue_Thunder_NL schreef op 16 October 2003 @ 23:36:
<form enctype="multipart/form-data" method="POST">

Staat dit in je form?
Heeft blue_thunder daar niet een puntje te pakken?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 17 October 2003 @ 18:57:
Heeft blue_thunder daar niet een puntje te pakken?
staat erin..

Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 02:03

JaQ

Verwijderd schreef op 17 October 2003 @ 17:48:
D: OF d: maakt geen verschil.
Die 'c:/temp\phpEC5.tmp' zit mij ook niet lekker, maar ik zie de fout niet !
Ligt het aan mij of zijn die slashes een beetje krom? staat hier een path? met een backslash en een slash door elkaar heen, of staat hier een slash en een escape character?

Egoist: A person of low taste, more interested in themselves than in me

Pagina: 1