[php] ftp file upload probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Omdat via http upload het vrij traag gaat probeer ik het nu via ftp. Het uploaden opzich wil wel lukken echter de file op de server blijft gewoon grootte 0 hebben.
De rechten staan op 777 dit moet dus ook goed gaan. De file wordt wel aangemaakt maar blijft leeg. Wat ik tot nu toe heb
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
//de aanroep
$bestandsnaam = stripslashes($_FILES['foto']['name']);
$destination = "./httpdocs/".$cfg_fotos['map'].$bestandsnaam;
if(uploadFTP($ftp['host'], $ftp['user'], $ftp['password'], stripslashes($_POST['foto']), $destination))
    echo "Gelukt";
else
    echo "Mislukt";

//uploaden
function uploadFTP($host, $user, $pass, $source, $destination){
    $conn = ftp_connect($host);
    if(!$conn){
        echo "connectie mislukt<br>";
        return false;
    }
        
    $login = ftp_login($conn, $user, $pass);
    
    if(!$conn || !$login)
        return false;
    echo $destination;
    ftp_pasv($conn, true);

    $upload = ftp_put($conn, $destination, $source, FTP_BINARY);

    ftp_quit($conn);

    if(!$upload){
        echo "fout bij uploaden<br>";
        return false;
    }
    echo "foto upgeload<br>";
    
    return true;
}


Ik heb zit achter een linux router mijn ftp programma heb ik op passive staan naar de host dus ik heb dit ook geprobeerd in php echter het maakt niks uit.
Heeft iemand een idee waar het aan kan liggen?

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
:? Wat probeer je nu eigenlijk? Een file van de ene server naar de andere te FTP'en?
Of wil je de 'normale' upload vanuit bijv. IE (via http) naar de webserver vervangen door een ftp versie :?

Acties:
  • 0 Henk 'm!

  • Fl4sh3r
  • Registratie: Juni 2002
  • Laatst online: 02-10-2023
Als je een file upload vanuit een formulier, dan geeft $_FILES['foto'] een file op de server! Die is dus al geupload.

PHP draait op je server, je kunt dus niet een bestand van de bezoeker z'n PC naar de server kopiëren met PHP.

Acties:
  • 0 Henk 'm!

Verwijderd

Maar bij FTP moet je toch eerst weer inloggen en zut?
Bij sommige plaatsen duurt dat ook weer lang voor je eindelijk ingelogt bent (gelukkig heb ik dat zelf niet maar daarvanaf ;))

Trouwens leuk voorbeeldje van php.net gebruikt ;)
die rechten zouden hier niets mee te maken hebben overigens omdat je het via ftp doet.
Simpelweg, je source klopt niet.

iets van $_FILES['foto']['tmp_name'] was het als mijn geheugen me niet in de steek laat.
PHP is en blijft server side, wat je nu probeert te doen is dat bestand dat ingevuld staat te zoeken op de server ?

Maar als je met $_FILES gaat werken kun je net zo goed gelijk HTTP upload maken :)
Inelkgeval dit is wat ik denk, niet wat ik zeker weet. Ik werk nooit met de ftp functies.


Duidelijker:
Je kunt volgens mij alleen bestanden die op de server staan uploaden via de ftp functie's in php. Dus moet je ze alsnog eerst via het http formulier uploaden.
Dit zou dus dubbelop zijn dan.

[ Voor 14% gewijzigd door Verwijderd op 24-03-2004 22:02 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer i.p.v. HTTP upload de upload via http te gebruiken. Ik was toch echt van mening dat je via ftp foto's kan uploaden onder php vanaf de bezoekers pc. Ik heb dit namelijk al eens voor een ander project gebruikt en dit werkte gewoon goed. Echter ik ben hier de code van kwijt en krijg het niet meer aan de gang.

Acties:
  • 0 Henk 'm!

  • Fl4sh3r
  • Registratie: Juni 2002
  • Laatst online: 02-10-2023
Probeer dit eens:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
//de aanroep 
$bestandsnaam = stripslashes($_FILES['foto']['name']); 
$destination = "./httpdocs/".$cfg_fotos['map'].$bestandsnaam; 
// eventueel destination aanpassen



if(copy($bestandsnaam, $destination) )
    echo "Gelukt"; 
else 
    echo "Mislukt"; 
?> 


(sorry, niet getest)

[ Voor 14% gewijzigd door Fl4sh3r op 24-03-2004 22:26 . Reden: haakje vergeten ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Via http upload werkte het altijd dat is dus niet het probleem

Acties:
  • 0 Henk 'm!

  • Fl4sh3r
  • Registratie: Juni 2002
  • Laatst online: 02-10-2023
geteste werkende versie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<? 
//de aanroep 
$bestandsnaam = stripslashes($_FILES['foto']['name']); 
$destination = "./".$bestandsnaam; 
// eventueel destination aanpassen 

if(copy($_FILES['foto']['tmp_name'], $destination))
    echo "Gelukt"; 
else 
    echo "Mislukt"; 
?> 

<form method="post" enctype="multipart/form-data"> 
<input type="file" name="foto">
<input type="submit">
</form>


Zoals je hieruit kunt opmaken komen files met $_FILES al op de server te staan (http upload), als je deze vervolgens gaat FTPen doe je het (zoals Maxvw al zei) dubbelop.

Als je graag wil dat men via ftp upload, moet je ze zelf naar je ftp laten uploaden...

Acties:
  • 0 Henk 'm!

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

drm

f0pc0dert

Als je graag wil dat men via ftp upload, moet je ze zelf naar je ftp laten uploaden...
Wat is dat voor fluts oplossing :? 8)7

gurt probeer het eens non-passive te doen (haal de ftp_pasv() aanroep even weg)

krijg je verder foutmeldingen, waarschuwing, iets van dien aard?

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


Acties:
  • 0 Henk 'm!

  • Fl4sh3r
  • Registratie: Juni 2002
  • Laatst online: 02-10-2023
drm schreef op 24 maart 2004 @ 23:29:
[...]
Wat is dat voor fluts oplossing :? 8)7
Het is niet mogelijk met PHP, tenzij je daarvoor een http-upload doet.
Conclusie: "Als je graag wil dat men via ftp upload, moet je ze zelf naar je ftp laten uploaden..."

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het non-passive en passive geprobeerd maakt niks uit en ik krijg niks geen foutmelding, hij ftp_but geeft zelfs een true terug maar me file blijft leeg

Acties:
  • 0 Henk 'm!

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

drm

f0pc0dert

Fl4sh3r:
Het is niet mogelijk met PHP, tenzij je daarvoor een http-upload doet.
Conclusie: "Als je graag wil dat men via ftp upload, moet je ze zelf naar je ftp laten uploaden..."
Oh, excuus, daar heb je wel gelijk in ja :) Ik las de startpost verkeerd.

gurt
Als de bedoeling is dat het bestand vanaf de client opgepikt wordt door de ftp van jouw php scriptje, dan heb je pech want dat gaat niet werken. (gelukkig niet, dan zouden er al wel heel wat bestanden van jou en mijn harde schijf gehaald zijn)

Wat wel gaat werken is gewoon (in plaats van de $_FILES [ 'foto' ] ['name']) de tmp_name pakken en die ftp'en. Ik kan me voorstellen dat je dit wilt om te zorgen dat owner van de bestanden ook de juiste is en je niet apache de owner wil kunnen laten veranderen. Maar dan moet je dus gewoon het met http geuploade bestand uit de tmp dir plukken en even naar localhost ftp'en.

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

Pagina: 1