Files uploaden zonder formulier.
Ik wil graag elke nacht een bepaalde directory uploaden naar de server (het liefst recursief). Nu wil ik dit bereiken door een script te maken en dit te laten starten m.b.v. een cronjob.
Het leek mij redelijk eenvoudig met ftp_put te doen en heb het voorbeeld van php.net gebruikt als basis:
Code (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
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
<?php
//Deze functie upload een bestand
private function uploadBestand()
{
echo $_SERVER['DOCUMENT_ROOT'];
$local_file = 'c:/somefile.txt';
$remote_file = 'somefile.txt';
// set up basic connection
$ftp_server = "**.*.*.***";
$conn = ftp_connect($ftp_server) or die("Could not connect");
ftp_login($conn,"****","******");
print_r(ftp_nlist($conn,"."));
ftp_chdir($conn,"/domains/***.nl/public_html/w/tmp/ftp/");
print_r(ftp_nlist($conn,"."));
if(ftp_put($conn, $remote_file, $local_file, FTP_ASCII)) {
echo "successfully uploaded $local_file\n";
} else {
echo "There was a problem while uploading $local_file\n";
}
// close the connection
ftp_close($conn);
}
?>
//Deze functie upload een bestand
private function uploadBestand()
{
echo $_SERVER['DOCUMENT_ROOT'];
$local_file = 'c:/somefile.txt';
$remote_file = 'somefile.txt';
// set up basic connection
$ftp_server = "**.*.*.***";
$conn = ftp_connect($ftp_server) or die("Could not connect");
ftp_login($conn,"****","******");
print_r(ftp_nlist($conn,"."));
ftp_chdir($conn,"/domains/***.nl/public_html/w/tmp/ftp/");
print_r(ftp_nlist($conn,"."));
if(ftp_put($conn, $remote_file, $local_file, FTP_ASCII)) {
echo "successfully uploaded $local_file\n";
} else {
echo "There was a problem while uploading $local_file\n";
}
// close the connection
ftp_close($conn);
}
?>
Nu krijg ik de volgende melding als ik dit uitvoer:
Warning: ftp_put(c:/somefile.txt) [function.ftp-put]: failed to open stream: No such file or directory in /home/****/domains/****.nl/public_html/w/tmp/ftp/uploadClass.php on line 61
//(Ik had het changedir commando ertussen gezet om te testen of de ftp connectie wel goed was)
Heeft iemand enig idee wat dit kan zijn? Ik weet niet of deze foutmelding betekent dat er lokaal iets niet goed is of dat er iets fout gaat met het schrijven naar de ftp?
Kan iemand mij hiermee op weg helpen?
Thx!
Gewijzigd op 21/07/2013 21:56:48 door Ama saril
De foutmelding lijkt me op zich duidelijk: op regel 61 gaat het fout. Het bestand c:/somefile.txt bestaat niet/is niet te vinden.
1) Cronjobs heb je niet op een windows machine. Gezien de bestandsnaam is dat wel een windows machine ('c:/somefile.txt')
2) upload class lijkt in dezelfde directory te staan als waar het bestand naartoe moet
- php file: /home/****/domains/****.nl/public_html/w/tmp/ftp/uploadClass.php
- upload naar: /domains/***.nl/public_html/w/tmp/ftp/
3) als je dit vanaf de server probeert te starten dan kan je natuurlijk niet bij een bestand op je lokale machine komen.
Nu kan ik het helemaal fout hebben natuurlijk, maar als ik er zo naar kijk is dit een kansloze missie.
Gewijzigd op 21/07/2013 22:04:57 door Erwin H
Erwin H op 21/07/2013 22:04:37:
Ik heb het idee dat hier een heleboel dingen door elkaar lopen die niet met elkaar te rijmen zijn.
1) Cronjobs heb je niet op een windows machine. Gezien de bestandsnaam is dat wel een windows machine ('c:/somefile.txt')
2) upload class lijkt in dezelfde directory te staan als waar het bestand naartoe moet
- php file: /home/****/domains/****.nl/public_html/w/tmp/ftp/uploadClass.php
- upload naar: /domains/***.nl/public_html/w/tmp/ftp/
3) als je dit vanaf de server probeert te starten dan kan je natuurlijk niet bij een bestand op je lokale machine komen.
Nu kan ik het helemaal fout hebben natuurlijk, maar als ik er zo naar kijk is dit een kansloze missie.
1) Cronjobs heb je niet op een windows machine. Gezien de bestandsnaam is dat wel een windows machine ('c:/somefile.txt')
2) upload class lijkt in dezelfde directory te staan als waar het bestand naartoe moet
- php file: /home/****/domains/****.nl/public_html/w/tmp/ftp/uploadClass.php
- upload naar: /domains/***.nl/public_html/w/tmp/ftp/
3) als je dit vanaf de server probeert te starten dan kan je natuurlijk niet bij een bestand op je lokale machine komen.
Nu kan ik het helemaal fout hebben natuurlijk, maar als ik er zo naar kijk is dit een kansloze missie.
Het zal punt 3 wel zijn dat ik niet bij mijn lokale files kan komen. Ik dacht omdat een file upload formulier wel gewoon lokale bestanden kan selecteren ik dit ook gewoon met een script zou moeten kunnen aanroepen maar blijkbaar mag dat niet.
Zijn er methodes waardoor ik dus wel een volledige lokale directory naar de server kan uploaden?
Wat ik al zei: kansloze missie.
Als je iets wilt uploaden zal dat geinitieerd moeten worden vanaf de machine waarvandaan je wilt uploaden, niet vanaf de machine waar naartoe geupload moet worden.
Gewijzigd op 21/07/2013 22:15:42 door Erwin H
Ama saril op 21/07/2013 22:07:47:
...een script zou moeten kunnen aanroepen maar blijkbaar mag dat niet.
Zijn er methodes waardoor ik dus wel een volledige lokale directory naar de server kan uploaden?
Zijn er methodes waardoor ik dus wel een volledige lokale directory naar de server kan uploaden?
Webbrowsers hebben die functionaliteit moeten uitschakelen, omwille van veiligheidsredenen die vrij evident zijn.
Mocht je zelf een webbrowser schrijven (Visual studio; C# programma schrijven met een webbrowser component ...), zou dat browsen in de lokale bestanden wel kunnen, maar dat zal de bedoeling niet zijn.
Wat het dichtst in de buurt komt, is dat de gebruiker bestanden kan drag/droppen. Ook meerdere bestanden tegelijk (select all => drop de foto's in een div ...)