PDA

Bekijk Volledige Versie : Re: Bestand aanmaken op FTP-server Stap 2



Nico Schuyt
21/09/04, 02:05
Nico Schuyt wrote:
> Nu alleen nog uitzoeken hoe ik met fopen() direct iets wegschrijf op
> de FTP-server

Het volgende leek hoopgevend:
//NA de ftp_login():
$destination_file="test.txt";
$source_file = tmpfile();
fwrite($source_file, "content of tempfile");
$upload = ftp_put($connectie_id, $destination_file, $source_file,
FTP_BINARY);
fclose($source_file);
// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}

maar leidt tot de melding
Warning: ftp_put() expects parameter 3 to be string; FTP upload has failed!

Iemand nog een suggestie?
--
Nico
www.nicoschuyt.nl

Daniel Tryba
21/09/04, 03:55
Nico Schuyt <nschuyt@hotmail.com> wrote:
> $source_file = tmpfile();
> fwrite($source_file, "content of tempfile");
> $upload = ftp_put($connectie_id, $destination_file, $source_file, FTP_BINARY);
....
> maar leidt tot de melding
> Warning: ftp_put() expects parameter 3 to be string; FTP upload has failed!

Dat is immers ook een resource (filehandle).

> Iemand nog een suggestie?

Waarom niet direct?

$fp=fopen('ftp://user:pass@host/full/path/to/file');
fputs($fp, 'content of tempfile');
fclose($fp);

--

Daniel Tryba

Robrecht Jacques
21/09/04, 16:35
Nico Schuyt wrote:
> Daniel Tryba wrote:
>
>>Waarom niet direct?
>>$fp=fopen('ftp://user:pass@host/full/path/to/file');
>>fputs($fp, 'content of tempfile');
>>fclose($fp);
>
> Helaas Daniel,
> <?
> $fp=fopen('ftp://anonymous:test@euronet.nl/xxx.xx.xx.xx/test.txt','w');
> fputs($fp, 'content of tempfile');
> fclose($fp);
> ?>

Blijkbaar moet je een email-adres doorgeven als passwd. Dus:

fopen("ftp://anonymous:me%40example.com@xxx.xx.xx.xx/test.txt") ?

vorm: ftp://user:passwd@host/file waarbij je het probleem hebt dat je
'@' in je passwd wilt gebruiken en die moet escapen met %40 (als Johns
suggestie klopt).

Mvg,
Robrecht

Daniel Tryba
21/09/04, 18:15
Nico Schuyt <nschuyt@hotmail.com> wrote:
> $fp=fopen('ftp://anonymous:test@euronet.nl/xxx.xx.xx.xx/test.txt','w');
> fputs($fp, 'content of tempfile');
> fclose($fp);
> ?>
> leidt tot
> Warning: fopen(ftp://...@euronet.nl/xxx.xx.xx.xx/test.txt): failed to open
> stream: Bad file descriptor :-(
>
> Werkte het bij jou wel??

Ja, het probleem zit hem met een aan zekerheid grenzende
waarschijnlijkheid in de opmerking van Robrecht.

Aanvullend wil ik nog even opmerken dat er nog een groot ander verschil
is. Met de ftp-url/fopen moet je dus het volledige path opgeven. Jou
voorbeeld urls willen een file test.txt in de root van de ftpd aanmaken,
meestal kan je daar niet schrijven. Met de ftpextensie wordt de file
aangemaakt in de directory waar de gebruiker terecht komt na het
inloggen (en dat is meestal zijn "homedir" waar hij wel mag schrijven).

Als je echt de verschillen wilt weten tussen de verschillende
implementaties kan ik je nogmaals aanbevelen een packetsniffer te
gebruiken om de daadwerkelijk communicatie te achterhalen.

--

Daniel Tryba

Nico Schuyt
21/09/04, 20:35
Daniel Tryba wrote:
> Met de ftp-url/fopen moet je dus het volledige path
> opgeven. ~.....

Daar ga ik nog wat verder mee spelen!

> Als je echt de verschillen wilt weten tussen de verschillende
> implementaties kan ik je nogmaals aanbevelen een packetsniffer te
> gebruiken om de daadwerkelijk communicatie te achterhalen.

Ongetwijfeld. Punt is alleen dat ik zo'n tool weinig gebruik en het angstige
vermoeden heb dat de rapportage me nog meer in verwarring brengt :0

Bedankt tot zover!

--
Nico
www.nicoschuyt.nl