Kod php:
<?php
# Big Files Uploader v1.1 by gogulas.pl #
@set_time_limit(0);
$plik = trim($_POST['plik']);
$wielkosc = trim($_POST['wielkosc']);
$host_ftp = trim($_POST['host_ftp']);
$user_ftp = trim($_POST['user_ftp']);
$pass_ftp = trim($_POST['pass_ftp']);
//$passv = trim($_POST['passv']);
$passv = "1";
$www = trim($_POST['www']);
if(empty($plik) or empty($wielkosc) or empty($host_ftp) or empty($user_ftp) or empty($pass_ftp) or empty($www))
{
echo '<br><br><br><br><br><br><br><form action="" method="post">
<input type="text" name="plik" value="Nazwa pliku do podzielenia" style="width: 250px;" maxlength="60" onFocus="this.value=\'\'"><br>
<input type="text" name="wielkosc" value="Na jak duze party skrypt ma podzielic plik" style="width: 300px;" maxlength="4" onFocus="this.value=\'\'"><br><br>
<input type="text" name="host_ftp" value="Host FTP" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'"><br>
<input type="text" name="user_ftp" value="Nazwa uzytkownika FTP" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'"><br>
<input type="password" name="pass_ftp" value="Haslo FTP" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'"><br><br>
<input type="text" name="www" value="Adres www strony" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'">
<br><input type="submit" value="Jedziesz!"></form>';
}
else
{
$id = hash("crc32", mt_rand());
$plikow = floor(filesize($plik) / 1024 / $wielkosc);
$uchwyt = fopen("$plikow plikow", "w");
fclose($uchwyt);
$uchwyt = fopen("./".$plik, "r");
for($num="0";!feof($uchwyt);$num++)
{
while(!feof($uchwyt) && $num_2 < $wielkosc){$tresc.= fread($uchwyt, 1024);$num_2++;}
$num_2 = "0";
$zapis = fopen("./".$id."_".$num.".part", "a+");
fwrite($zapis, $tresc);
$tresc = "";
fclose($zapis);
$conn_id = ftp_connect($host_ftp);
$login_result = ftp_login($conn_id, $user_ftp, $pass_ftp);
if($passv == "1")ftp_pasv($conn_id, true);
if(!ftp_put($conn_id, $id."_".$num.".part", $id."_".$num.".part", FTP_BINARY))
{echo "Napotkano problemy w czasie przesyłania pliku $plik\n";exit;}
ftp_close($conn_id);
@unlink($id."_".$num.".part");
}
fclose($uchwyt);
$tresc = '<?php
@set_time_limit(0);
for ($num = "0"; file_exists("./'.$id.'_$num.part");$num++)
{
$odczyt = fopen("'.$id.'_$num.part", "r");
while(!feof($odczyt)){$dane.= fread($odczyt, 1024);}
$zapis = fopen("./'.$plik.'", "a+");
@unlink("'.$id.'_$num.part");
fwrite($zapis, $dane);
$dane = "";
}
unlink("temp.php");
?>';
$temp = fopen("temp.temp", "w");
fwrite($temp, $tresc);
fclose($temp);
$conn_id = ftp_connect($host_ftp);
$login_result = ftp_login($conn_id, $user_ftp, $pass_ftp);
if($passv == "1")ftp_pasv($conn_id, true);
if(!ftp_put($conn_id, "temp.php", "temp.temp", FTP_BINARY))
{echo "Napotkano problemy w czasie przesyłania pliku temp.php\n";exit;}
ftp_close($conn_id);
@unlink("temp.temp");
$fp=fsockopen($www, 80);
fwrite($fp, "GET /temp.php HTTP/1.1
User-Agent: Twoja stara (Windows 666; U; FY)
Host: $www
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: identity, *;q=0
Cache-Control: no-cache
Connection: Close
");
while(!feof($fp)){$dane.= fread($fp, 1024);}
fclose($fp);
if(stristr($dane, "Location: "))
{
$przed = explode("Location: ", $dane);
$po = explode("/temp.php", $przed[1]);
$www = explode("http://", $po[0]);
$www = $www[1];
unset($przed);
unset($po);
unset($dane);
$fp=fsockopen($www, 80);
fwrite($fp, "GET /temp.php HTTP/1.1
User-Agent: Twoja stara (Windows 666; U; FY)
Host: $www
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: identity, *;q=0
Cache-Control: no-cache
Connection: Close
");
while(!feof($fp)){$dane.= fread($fp, 1024);}
fclose($fp);
}
@unlink("$plikow plikow");
echo "na 99% wszystko poszlo ok:<br>";
echo "<html><body><a href=http://$www/$plik>http://$www/$plik</a></body></html>";
exit;
}
?>
Niestety ma powazna wade, kazdy z kawalkow zapisuje na dysk i dopiero wysyla, nastepnie usuwa, bezsensowne meczenie dysku, nie wiem jak zrobic to w pamieci, ale kiedy sie dowiem na pewno zedytuje :P