NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Upload na FTP

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
hypnozc
Člen
Avatar
hypnozc:18.9.2015 11:54

Ahoj, mam php kod, ktery z formulare vezme soubor a uploadne ho na FTP server... Jenze ted bych tento kod chtel rozsirit, aby uploadoval vice souboru naraz... Dosavadni kod vypada takto:

$ftp_server = "kocicka.endora.cz";
$ftp_user_name = "";
$ftp_user_pass = "";
$destination_file = "project-cars-mf.8u.cz/web/upload";
$name_file = $_FILES['file']['name'];
$source_file = $_FILES['file']['tmp_name'];

// set up basic connection
$conn_id = ftp_connect($ftp_server);
ftp_pasv($conn_id, true);

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

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

// close the FTP stream
ftp_close($conn_id);

Poradi mi prosim nekdo, jak to upravit, aby to uploadovala vice souboru naraz?

Odpovědět
18.9.2015 11:54
Schopný programátor si štěrbinu vždy najde...
Avatar
Richard
Člen
Avatar
Odpovídá na hypnozc
Richard:18.9.2015 12:05
$upload = ftp_put($conn_id, $destination_file1."/".$name_file1, $source_file1, FTP_BINARY);
$upload = ftp_put($conn_id, $destination_file2."/".$name_file2, $source_file2, FTP_BINARY);
:-D

Ty soubory co chceš nahrávat nacpi do pole a pak ho projdi foreachem ve kterým bude ftp_put

Editováno 18.9.2015 12:07
Nahoru Odpovědět
18.9.2015 12:05
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 12:07

Mohl by si mi to prosim nazorne ukazat na tom kodu nahore?

Nahoru Odpovědět
18.9.2015 12:07
Schopný programátor si štěrbinu vždy najde...
Avatar
Richard
Člen
Avatar
Odpovídá na hypnozc
Richard:18.9.2015 12:08

Klidně, jak budeš ty soubory posílat? Před jeden input=file s příznakem multiple nebo přes více inputů?

Nahoru Odpovědět
18.9.2015 12:08
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 12:11

Pres jeden s parametrem multiple :)

Nahoru Odpovědět
18.9.2015 12:11
Schopný programátor si štěrbinu vždy najde...
Avatar
Richard
Člen
Avatar
Richard:18.9.2015 12:38
<input name="fajl[]" type="file" multiple="" />

foreach ($_FILES['fajl'] as $file) {
        echo var_dump($file);
}
Editováno 18.9.2015 12:38
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
18.9.2015 12:38
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 12:48

Asi sem natvrdlej, ale nechapu jak s tim pracovat, kam to do toho kodu vlozit :/ Muzes to zapsat do toho meho kodu nahore?

Nahoru Odpovědět
18.9.2015 12:48
Schopný programátor si štěrbinu vždy najde...
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 13:04

Takto by to neslo?

foreach ($_FILES['file'] as $file) {
  // upload the file
  $upload = ftp_put($conn_id, $destination_file."/".$file['name'], $file['tmp_name'], FTP_BINARY);
}
Nahoru Odpovědět
18.9.2015 13:04
Schopný programátor si štěrbinu vždy najde...
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 13:21

Tak to nefunguje... A nefunguje ani

foreach ($_FILES['file[]'] as $file) {
  $name_file = var_dump($file)['name'];
  $source_file = var_dump($file)['tmp_name'];
  // upload the file
  $upload = ftp_put($conn_id, $destination_file."/".$name_file, $source_file, FTP_BINARY);
}

Vazne si uz nevim rady :(

Nahoru Odpovědět
18.9.2015 13:21
Schopný programátor si štěrbinu vždy najde...
Avatar
Richard
Člen
Avatar
Odpovídá na hypnozc
Richard:18.9.2015 13:28

Vypiš si var_dump($file) před tím foreachem a podle toho to postav.

Nahoru Odpovědět
18.9.2015 13:28
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 13:30

Nechapu... Jak si mam vypast var_dump($file)pred foreachem, kdyz ta promenna $file je az v tom foreachu?

Nahoru Odpovědět
18.9.2015 13:30
Schopný programátor si štěrbinu vždy najde...
Avatar
hypnozc
Člen
Avatar
Odpovídá na Richard
hypnozc:18.9.2015 13:42

Tak sem to udelal tak, jak umim...

for($i=0; $i < count($_FILES['file']);$i++){
  $name_file = $_FILES['file']['name'][$i];
  $source_file = $_FILES['file']['tmp_name'][$i];
  $upload = ftp_put($conn_id, $destination_file."/".$name_file, $source_file, FTP_BINARY);
}
Nahoru Odpovědět
18.9.2015 13:42
Schopný programátor si štěrbinu vždy najde...
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na hypnozc
TomasGlawaty:18.9.2015 13:43

Input má sice atribut name='file[]', ale projížděj ho jako:

foreach ($_FILES['file'] as $file)

Jinak hází to nějakou chybu ?

Editováno 18.9.2015 13:44
 
Nahoru Odpovědět
18.9.2015 13:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.