Autor Zpráva
Dell
Profil *
proč jste to téma uzamčeli? Copak upload souborů přes ftp je něco zakázaného? Jenom mě to nejde pomocí http. Soubory jsou příliš velké asi tak 7MB. Nestačí na to alokovaná paměť serveru. A někde jsem četl, že velké soubory je lepší uploadovat přes ftp, ale nikde to není nijak rozvedené alespoň v češtině jsem nic nenašel (anglicky neumím...).
BaTeCzKo
Profil
Dell
A na co se vlastně ptáš?
Dell
Profil *
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

nevím, co dosadit za proměnné $destination_file a $source_file. Ke spojení dojde $conn_id je v pořádku, ale soubor se neuploadne. Tak nevím, zda nemám špatně ty ostatní proměnné. Do $destination_file jsem dosadil relativní cestu/název souboru a do $source_file jméno souboru, který se má upoadovat pomocí formuláře. Za každou radu předem děkuji.
Leo
Profil
Zkuste pochopit problem: Mate dva konce, klienta (u prohlizeni webove stranky je to prohlizec) a na druhem konci server (treba Apache) na nejz potrebujete soubor dopravit. Pokud chcete pouzit vyber souboru a jeho odeslani pres formular v prohlizeci, pak se pouziva protokol http a fce ktere zacinaji v PHP jsou vam na dve veci, a to ze dvou duvodu: 1, pouzivaji protokol ftp, 2, behaji na serveru, ale vas zajima klient.

Pokud chcete pouzit protokol ftp muzete. Pak bud chcete nechat klienta (prohlizec) - ten to prakticky neumi. Nebo muzete pouzit nejaky program na prenos souboru pres ftp. V obou pripadech potrebujete mit na danem serveru ftp pristup (nejlepe zaheslovany). Ftp fce v PHP jsou vam opet na dve veci - PHP neni klient, ale je na opacnem konci, kam soubor potrebujete dopravit... Leo
Dell
Profil *
Zkoušel jsem to podle tohoto:

<html>

<body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">

<form name="Attachments" method=POST action="sendimage.php" enctype="multipart/form-data">

<input type=hidden name=box value="">

<tr>
<td nowrap width="1%">&nbsp;&nbsp;<b>Image:</b></td>
<td colspan=2>
<input type=file name=source_file size=20> <br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

</td>
</tr>
<input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
</body>
</html>

The critical point in this form is the usage of enctype="multipart/form-data"
If you don't use this part your upload operations won't work.
Then u must create sendimage.php as follows:

<?php

$ftp_server='190.148.20.201';//serverip
$conn_id = ftp_connect($ftp_server);


// login with username and password
$user="username";
$passwd="*****";
$login_result = ftp_login($conn_id, $user, $passwd);

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
die;
} else {
echo "<br>Connected to $ftp_server, for user $user<br>";
}
//directorylike /www.velibaba.com/images
ftp_chdir($conn_id, "www.velibab.com");
ftp_chdir($conn_id, "compimages");

//$destination_file=ftp_pwd($conn_id);

$destination_file="x.jpg";
echo ("<br>");
print $destination_file;

echo ("<br>");

// 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_close($conn_id);
?>



Takže je to špatně?
Honza Hučín
Profil
Jestli jsem tomu zápisu dobře porozuměl, odesílá se soubor přes formulář na server metodou POST a tam se s ním čaruje nikoli obvyklým způsobem ( http://php.ftp.cvut.cz/manual/cs/features.file-upload.php ), ale s využitím FTP. Problém je ale IMHO v tom, že ten soubor na server nedorazí, protože je moc velký. V takovém případě nepomůže FTP místo standardního způsobu.

Je potřeba se podívat na hodnotu direktivy upload_file_maxsize, která je standardně 2M. Pokud je potřeba posílat od uživatele větší soubory, měla by se kvóta zvýšit. Ale pak už půjde soubory zpracovávat i standardně, není třeba kouzel s FTP.

FTP by se použilo v případě, kdybych posílal soubory ze serveru na jiný server. Ale to není tento případ, aspoň jak se zdá.

Téma bylo zamčeno, protože mi připadalo duplicitní. V tuto chvíli se mi zdá, že to k duplicitě zase směřuje, ale nechám to ještě chvíli žít, třeba se mýlím.
Dell
Profil *
Ano, teď dávám za pravdu, že to začíná k duplicitě směřovat. Tudy asi tedy cesta nepovede. Ale dovolím si ještě na to navázat. Toto mě odepsal poskytovatel webhostingu na upload pomocí http: resil jsem Vas problem s kolegou programatorem a bohuzel zrejme je problem zpusoben tim, ze opravdu dojde k vycerpani prideleneho limitu pameti pro Vas web. Limit pameti vsak pro jednotlive weby navysovat nelze. Budete to tedy muset resit jinak.

Mohlo by být řešením přejít k jinému poskytovateli webhostingu? Nebo si nepomůžu?
Toto téma je uzamčeno. Odpověď nelze zaslat.