[PHP][FTP] Bestand uploaden, ftp_put error

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben er nu al een paar uur mee bezig geweest en ik heb ook nog op GoT gezocht en bij google en ik denk nu: ik vraag het wel even. Ik wil simpelweg een bestand kunnen uploaden naar een bepaalde variabele directory. Onderstaand script(standaardvoorbeeld uit Manual) zou dit op een kleine aanpassing na moeten kunnen. Het probleem is dat de regel "upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY)"niet werkt bij mij. Hij zegt dat hij het bestand niet kan vinden, terwijl ik dat met zo'n standaard input type=file textveld doe. Ik gebruik die variabele die daar uit komt als source_file. $destination_file heb ik maar gelijk gesteld aan de homedirectory van de site. Ik zou dan denken dat het goed moet gaan, maar niet dus. Wat doe ik fout?

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
<?php
// set up basic connection
$conn_id = ftp_connect("$ftp_server"); 

// login with username and password
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass"); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
        echo "Ftp connection has failed!";
        echo "Attempted to connect to $ftp_server for user $user"; 
        die; 
    } else {
        echo "Connected to $ftp_server, for user $user";
    }

// upload the file
$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY); 

// check upload status
if (!$upload) { 
        echo "Ftp upload has failed!";
    } else {
        echo "Uploaded $source_file to $ftp_server as $destination_file";
    }

// close the FTP stream 
ftp_quit($conn_id); 
?>

Acties:
  • 0 Henk 'm!

Verwijderd

$destination_file heb ik maar gelijk gesteld aan de homedirectory van de site
Dit moet een filenaam zijn en geen directory ( misschien werkt het met path ook maar de manual zegt alleen filenaam ).

Als dit niet het probleem is moet je eens een kijken of de functie
"bool ftp_chdir ( resource ftp_stream, string directory)" je probleem oplost.
Dus eerst even van directory veranderen en dan de upload met alleen de filenaam.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Correctie: $destination_file had ik gelijkgesteld aan de homedirectory + $sourcefile.
U bent ingelogd als joop

Connected to ******* , for user *****Warning: ftp_put(): error opening C:\\WINDOWS\\Desktop\\ASB ANGULAR MOMENTUM IN THE JAVELIN THROW_bestanden\\leblanc-B.jpeg in /www/htdocs/***/projecten/itemtoevoegen.php4 on line 49
Ftp upload has failed!
Dit is de fout die ik krijg... Het lijkt me dat de dubbele slashes niet goed zijn, maar als ik die stripslash en dan wel steeds maar een slash heb, doet hij het nog steeds niet. Het kan natuurlijk ook zo zijn, dat je per se "special characters" neer wilt zetten, dan moet het wel. Dus bij nader in zien weet ik het nog steeds niet. }:O

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
PHP loopt op de server, dus FTP werkt ook vanaf de server, en niet vanaf de pc van de persoon die de webpagina bekijkt.

Acties:
  • 0 Henk 'm!

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 23-06 23:17
Inderdaad, dus je moet de naam van de geuploadde file als $source_file doen.

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

heel stom, maar wordt het form gesubmit als:

multipart/form-data
Dat is namelijk ook wel vrij belangrijk.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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
36
37
38
39
40
        if($source_file){
        $ftpserver= "********";
        $user = "*****";
        // set up basic connection
        $conn_id = ftp_connect("**********"); 
                
        // login with username and password
        $login_result = ftp_login($conn_id, "*******", "****"); 
        
        // check connection
        if ((!$conn_id) || (!$login_result)) { 
                echo "Ftp connection has failed!";
                echo "Attempted to connect to $ftp_server for user $user"; 
                die; 
            } else {
                echo "Connected to $ftp_server, for user $user";
            }
        
        // upload the file
        
        $destination_file=$source_file;
        $upload = ftp_put($conn_id,"hallo.jpeg" ,"$source_file", FTP_BINARY); 
        
        // check upload status
        if (!$upload) { 
                echo "Ftp upload has failed!";
            } else {
                echo "Uploaded $source_file to $ftp_server as $destination_file";
            }
        
        // close the FTP stream 
        ftp_quit($conn_id); 
    }
    else{?>
    <form action=itemtoevoegen.php4?action=upload encType=multipart/form-data method=post>
    <input type=file name=source_file>
    <input type="hidden" name=action value=upload>
    <input type="submit" value="Send">
    <?
    }

De opmerking van TeeDee heeft geholpen. Hij upload nu iets, denk ik maar er komt opeens een of andere temp directory bij kijken. Dat zal wel het eigen willetje zijn van de server of zo. Connected to , for user **** Uploaded /tmp/phpZXpAGB to as /tmp/phpZXpAGB Ik had C:\WINDOWS\Desktop\ASB ANGULAR MOMENTUM IN THE JAVELIN THROW_bestanden\leblanc-B.jpeg upgeload. Ik heb maar hallo.jpeg van de destination_file gemaakt, om te kijken of het dan wel werkt, maar het schiet nog steeds niet erg op.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt dus nog niet......
Het enige wat ik dus niet weet is wat de waarden van de variabelen "$destination_file" en "$source_file" moeten zijn. Een van de twee is afkomstig uit zo'n input file veld.(waarschijnlijk $source_file) De ander weet ik dus niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt ondertussen. Ik heb het zelf maar even helemaal uitgezocht...Toch bedankt voor het typen...
Pagina: 1