[php / ftp] string uploaden ?

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Ik vroeg me af of het mogelijk is om een string met tekst up te loaden via ftp gebruikmakend van php.

In de manual staat wel dat je ftp_fput kan gebruiken icm fopen, maar als ik bijvoorbeeld een stylesheet in een variabele heb staan. kan ik de inhoud hier van dan meteen uploaden? Of moet ik deze eerst naar een template file wegschrijven en dan uploaden en dan weer verwijderen?

Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Als fopen wrappers aan staan kun je dit doen:
PHP:
1
2
3
4
$file = 'bla bla';
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
fwrite($handle, $file);
fclose($handle);

Of zo (PHP 5):
PHP:
1
file_put_contents("ftp://user:password@example.com/somefile.txt", $file);

Anders idd een tijdelijk bestand maken, dat kan handig met tmpfile :)

[ Voor 3% gewijzigd door user109731 op 21-06-2007 17:51 ]


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Met tmpfile maakt hij wel een tmp bestand aan, en bij fwrite geeft hij geen error, alleen als ik het bestand bekijk dat geupload zou moeten zijn, dan staat er niks in. Ik doe het volgende:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function myftpuploadtxt($ftpdest,$ftpstring,$ftpconnection) {
    
    $handle = tmpfile();
    $w = fwrite($handle,$ftpstring);
    if (!$w) {
        echo "fout".$w;
    }
    if (!$ftpconnection) {
        fclose($handle);
        return false;
    } else {
        $upload = ftp_fput($ftpconnection,$ftpdest,$handle,FTP_BINARY);
        //fclose($handle);
        if (!$upload) {
            return false;
        } else {
            return true;
        }
    }
}


Ik heb zowel ASCII als BINARY geprobeerd.

[ Voor 6% gewijzigd door RSD op 21-06-2007 18:23 ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Is er een reden dat je het graag via FTP doet?
HTTP POST lijkt me eenvoudiger. Dan heb je op de ontvangende server alleen een (php) file nodig die de post-data wegschrijft in een lokaal bestand.
(of PUT, wat hiervoor bedoeld is, maar dat wordt zelden gerbuikt).

In de manual staat bij fsockopen() een voorbeeld heo je een POST-request kunt doen.

[ Voor 10% gewijzigd door frickY op 21-06-2007 18:42 ]


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
RSD schreef op donderdag 21 juni 2007 @ 18:21:
Met tmpfile maakt hij wel een tmp bestand aan, en bij fwrite geeft hij geen error, alleen als ik het bestand bekijk dat geupload zou moeten zijn, dan staat er niks in. Ik doe het volgende:
Je moet denk ik na de fwrite eerst weer 'seeken' naar het begin van het bestand. Probeer dit eens na fwrite:
PHP:
1
fseek($handle, 0);

Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
fseek zorgt er inderdaad voor dat het wel verschijnt.

Super bedankt!
Pagina: 1