Dec
11
2006

File Downloader

Lama-kelamaan saya merasa ini hal yang tidak efisien, karena file harus mampir dahulu di komputer saya. Selain itu, kadang agak repot untuk upload dari komputer saya ke webhosting. Ini dikarenakan kadang koneksi internet tidak stabil. Dengan pertimbangan tersebut akhirnya saya memikirkan cara download dengan skema:

Image 2
Skema ini bukan ide dari saya lho, dalam artian ide ini sudah umum dipakai oleh orang lain seperti developer rapidleech.

Ok deh, tidak usah berpanjang-panjang kata. Saya sudah membuat script sederhana untuk melakukan hal tersebut. Syarat utama dari script sederhana ini adalah adanya fasilitas CURL di hosting tempat meletakkan script ini.

Ini Bagian Form:

<form method="post" action="downloader.php">
<table width="400">
<tr>
    <td>URL</td>
    <td></td>
</tr>
<tr>
    <td>Save to</td>
    <td> </td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</table>
</form>

Ini Bagian Action:

if ($_POST["url"] != ""  &amp;&amp; $_POST["save"] != "")
{
    $ch = curl_init();

    $fh = fopen("'" . $_POST["save"] . "'", "w");

    curl_setopt($ch, CURLOPT_URL, "'" . $_POST["url"] . "'");
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($ch, CURLOPT_FILE, $fh);

    curl_exec($ch);

    if (!curl_errno($ch))
        echo $_POST["url"]." have been downloaded.";
    else
        echo curl_error($ch);
    curl_close($ch);

}

Script tersebut saya jadikan satu untuk memudahkan penggunaan saja, jadi hanya upload satu file, kemudian tinggal pakai saja itu file. Script ini membutuhkan 2 parameter masukan, yaitu URL dan Save to. URL di harus diisi dengan alamat file yang akan di download, lengkap dengan http://. Sedangkan Save to adalah tempat untuk meletakkan file tersebut. Tempat disini harus full path (nama_direktori/nama_file.nya). jangan lupa direktori dari tempat tujuan harus diijinkan ditulisi oleh others (parah-parahnya di chmod 777).

Kalau dilihat dari script diatas terlihat ada security hole di bagian lokasi penyimpanan file. Sehingga apabila anda khawatir sebaiknya ditambahkan $_SERVER['DOCUMENT_ROOT'] di bagian fopen() untuk mengurangi penyalahgunaan dari script ini. Agar lebih aman, silahkan menambahkan authentikasi tertentu agar hanya kita sendiri yang dapat menggunakan script tersebut.

Mungkin ini saja tutorial yang sederhana ini. Yang saya tonjolkan adalah idenya (walaupun bukan ide saya), untuk pengembangannya silahkan dikreasikan sesuai kebutuhan Anda.

Aris Priyantoro
aris.pituruh.com
Full Source ada di disini

About the Author: Aris Priyantoro

19 Comments + Add Comment

  • Mas,
    dengan cara lain yang lebih sederhana kita bisa melakukannya dengan cara lain: xmlrpc/json. phpxmlrpc bisa diset utk bekerja dengan gaya json-rpc. Dulu kelemahannya jelas, semua binary akan di encode ke base64, yang membuat ukurannya bengkak 30%, tapi sekarang class phpxmlrpc sudah mendukung kompresi, jadi sebelum di download, di kompress dulu. Hasilnya lumayan, saya bisa menggunakannya bersama XAMPP sebagai downloader semua hal utk klien2 saya, seolah mereka punya ftp downloader. Yang jelas semua diubah menjadi http -> http downloader. Tidak se-fancy rapidleech script, but it works. :)

  • Trus kalo pengen download dari Rapidshare?? gmn?? :o

  • Udah pernah pake Curl mas?

  • kalo ingin download ebook untuk belajar Ajax, Json dan Javascript yang gratisan, ada gak?
    http://blog.phpug.or.id/smilies/yahoo_silent.gif
    [-(

  • Ini skrip saya juga sederhana :
    <?php
    shell_exec(“wget -c http://targethost.tld/namafile.ext“);
    ?>
    Simpan skrip di atas di folder yg ter-chmod 777

  • @ Hermann Golden

    kok wget -c ?
    bukankah wget -c artinya continue alias meneruskan proses yang udah jalan?

  • script untuk download manager ada gak?.jadi bisa download dan di save ke server web host

  • Lah, dihalaman kedua khan ada link-nya. Atau langsung tengok kesini: http://aris.pituruh.com/data/downloader.txt

  • scripts php shell dengan perintah wget, jalan atau enggak nya tergantung dari settingan server nya. kalau sudah dari sananya shell nya disable, yah skripnya pasti gak jalan.
    sekarang ini sudah jarang ada hostingan yang shell nya enable, rata2x disable semua.

  • pas nyoba scriptnya kok kluar error.. trus scriptnya yg bagian ini:
    $fh = fopen(“‘” . $_POST["save"] . “‘”, “w”);
    curl_setopt($ch, CURLOPT_URL, “‘” . $_POST["url"] . “‘”);
    saya hilangkan tanda petik tunggalnya “‘” ternyata bisa jalan.. :D oia, saya juga nambahin CURLOPT_FOLLOWLOCATION. supaya klo linknya itu redirect ke link laen, masih bisa didownload.
    $fh = fopen($_POST["save"], “w”);
    curl_setopt($ch, CURLOPT_URL, $_POST["url"]);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

  • wekekek.. ternyata di comment atas blom kehapus tanda petik tunggalnya yg di bawah.. heiheiehi.. :P tolong dihapuskan ya, mas Aris.. :)

  • mo tanya tentang session..saya masih awam tentang pembuatan session untuk login. kira2 bisa bantu gak? kalo bisa yang jelas soalnya saya masih awal banget tentang php..trims

  • kalo ga pake curl bisa ga yah…???

  • wah yg dari http://aris.pituruh.com/data/downloader.txt hasilnya Protocol ‘http not supported or disabled in libcurl.

    saya nyoba pake fread malah berhasil :) tested on file 85 MB. di blog saya kemaren saya bahas tuh. CMIIW

  • saya pengen bisa, cuma kelihatannya rumit amat ya?

  • pasang php shell aja boss.
    http://hadyanwijaya.wordpress.com/shell/

    intinya di

  • :D script php ga tampil yah di koment hehe

    shell_exec(“perintah shell”);

Leave a comment