Avatar billede wolstrup Nybegynder
05. november 2007 - 11:53 Der er 8 kommentarer

Gem CSV på ftp

Hej, er ved at forsøge at generere en cvs fil som jeg så skal uploade til en ekstren ftp, men kan ikke rigtig få det til at funke?

//FTP - Oplysninger
$ftp_server    = "88.88.88.88"; //Og nej, ikke ip´en til Leasy ;-)
$ftp_login     = "brugernavn";
$ftp_pass     = "password";
$path         = "/mappe";

//FTP - Connect
$conn_id = ftp_connect($ftp_server);
ftp_login($conn_id, $ftp_login, $ftp_pass);

$navn = "exports_" . date("Ymd") . ".csv";
$file = $path."/".$navn;

//Smid filen over
@ftp_pasv($conn_id, on);
@ftp_put($conn_id, $file, $csv_output, FTP_BINARY);
ftp_quit($conn_id);
Avatar billede jakobdo Ekspert
05. november 2007 - 13:03 #1
Hvad er det som ikke funker?
Prøv at fjern @ fra din kommandoer, måske det kan give lidt info.
Avatar billede pidgeot Nybegynder
05. november 2007 - 13:08 #2
Der er i hvert fald den fejl at ftp_pasv skal bruge true, og ikke on - on er ikke en boolean-værdi.

Derudover kan jeg ikke se ud fra dette kode se om $csv_output er dit lokale filnavn, eller om det er det egentlige indhold - det skal nemlig være den førstnævnte.
Avatar billede wolstrup Nybegynder
05. november 2007 - 14:04 #3
Samler indholdet ovenover.. Altså

$csv_output .= 'lala';
$csv_output .= 'lala';

osv..?
Avatar billede pidgeot Nybegynder
05. november 2007 - 14:48 #4
Jamen, det er jo så der dit problem ligger. ^-)

http://dk.php.net/ftp_put foreskriver ganske klart at den tredje parameter skal være et filnavn der peger på den fil der skal uploades. Med andre ord skal du gemme til en fil før du kan bruge ftp_put.

Alternativet er selv at håndtere alt med fsockopen og så selv implementere en simpel FTP-klient - men det er vist ikke besværet værd.
Avatar billede wolstrup Nybegynder
05. november 2007 - 15:43 #5
Ok, nogen forslag til hvordan jeg lige kringler den? Hvordan gemmer jeg csv´en på serveren jeg arbejder på uden at komme til at åbne en download dialog?
Avatar billede pidgeot Nybegynder
05. november 2007 - 15:47 #6
De to ting har intet med hinanden at gøre - du skal jo gemme filen på den computer PHP-scriptet kører på, altså serveren.

Opret en fil med fopen og skriv til den med fwrite, hvorefter du lukker filen og sender stien til ftp_put. Når den er uploadet, sletter du med unlink.

Husk i den forbindelse på at tage højde for at scriptet måske bliver kørt to gange på samme tid, så filnavnet skal være forskelligt fra gang til gang.
Avatar billede wolstrup Nybegynder
07. november 2007 - 08:28 #7
Men det var mere hvordan jeg gemmer indholdet af $csv_output på serveren før jeg bruger ftp_put?
Avatar billede jakobdo Ekspert
07. november 2007 - 08:36 #8
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester