met ftp in php een bestand uploaden, kan dat?
kan iemand mij zeggen wat er mis is met onderstaand script? Ik heb dit van het internet gehaald om vanuit een php webpagina een file up te loaden via ftp om zo het inputformulier te omzeilen.
Mijn dochter moet namelijk regelmatig 10 foto's in een nieuwe map op haar site zetten en ik zou dit willen automatiseren zodat ze eigenlijk enkel de naam van de nieuwe map moet invoeren en dat de rest achter de schermen afgehandeld wordt. Zonder 10 keer te moeten bladeren en dan een submit-toets in te moeten drukken. Ik dacht als het met 1 foto zou willen lukken, dan herhaal ik dit 10 keer en hopla.
Helaas, met onderstaand script komen er in ieder geval geen foutmeldingen meer, maar er wordt ook niets in de map "upload" geplaatst.
Kan iemand mij helpen, ik weet ondertussen al iets over de beveiliging van PHP die dit onmogelijk maakt. Is er een ftp-client te integreren die enkel maar naar de gewenste folder moet kunnen uploaden? Met een SHELL opdracht of HPH schijnt dat te kunnen, maar daar ken ik helemaal niets van.
Please help.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$ftp_server = "mijndomein.be";
$ftp_user_name = "naam";
$ftp_user_pass = "paswoord";
$file = "c:/Users/Marc/Desktop/bestelscript/werkmap6/foto1.jpg";
$remote_file = '/alduid/public_html/upload';
// 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);
// upload a file
put. "c:/Users/Marc/Desktop/bestelscript/werkmap6/foto1.jpg['public_html/upload']";
// close the connection
ftp_close($conn_id);
?>
$ftp_server = "mijndomein.be";
$ftp_user_name = "naam";
$ftp_user_pass = "paswoord";
$file = "c:/Users/Marc/Desktop/bestelscript/werkmap6/foto1.jpg";
$remote_file = '/alduid/public_html/upload';
// 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);
// upload a file
put. "c:/Users/Marc/Desktop/bestelscript/werkmap6/foto1.jpg['public_html/upload']";
// close the connection
ftp_close($conn_id);
?>
Maar zoals je in je script al kan zien gaat 'put.' (is geen link) niet werken want dat is geen php.
Kijk op php.net eens naar alle php functions.
# ftp_ alloc
# ftp_ cdup
# ftp_ chdir
# ftp_ chmod
# ftp_ close
# ftp_ connect
# ftp_ delete
# ftp_ exec
# ftp_ fget
# ftp_ fput
# ftp_ get_ option
# ftp_ get
# ftp_ login
# ftp_ mdtm
# ftp_ mkdir
# ftp_ nb_ continue
# ftp_ nb_ fget
# ftp_ nb_ fput
# ftp_ nb_ get
# ftp_ nb_ put
# ftp_ nlist
# ftp_ pasv
# ftp_ put
# ftp_ pwd
# ftp_ quit
# ftp_ raw
# ftp_ rawlist
# ftp_ rename
# ftp_ rmdir
# ftp_ set_ option
# ftp_ site
# ftp_ size
# ftp_ ssl_ connect
# ftp_ systype
Dat heb ik al gedaan, maar dan krijg ik steeds een foutmelding dat de stream niet kan geopend worden. het 'put.' heb ik van een engelstalig forum gehaald waar men dit op een andere topic als foutoplossing gaven. En inderdaad, geen fouten meer maar ook niets upgeload.
ftp_connect();
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';
// 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);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection
ftp_close($conn_id);
?>
$file = 'somefile.txt';
$remote_file = 'readme.txt';
// 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);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection
ftp_close($conn_id);
?>
Gewijzigd op 20/11/2011 22:31:16 door - SanThe -
Volgens ik overal al gelezen heb heeft PHP geen toegang tot je eigen computer, maar dan vraag ik mij af waar de ftp statements dan toe dienen.
Jordi Kroon, bedankt, maar dat gebruik ik ook.
Lastige job hé, 'k weet het ook niet meer.
Waarom niet gewoon een ftp-programma gebruiken. Die zijn best simpel.
Een ftp programma gebruiken we nu ook, maar ik wil heel de boel automatiseren zodat ze enkel de naam van de klant moet ingeven die dan meteen ook de nieuwe dir vormt en dat dan gans het proces begint van uploaden, mail versturen, ect. Gewoon met één klantnaam in te vullen. Nu is het veel poespas.