Hari ini saya memeriksa mega.co.nz dan saya senang dengan beberapa fitur. Misalnya di halaman unduhan akan mengunduh file di browser dan setelah itu mendekripsi dengan javascript.
misalnya lihat tautan ini untuk mengunduh file png:
https://mega.co.nz/#!7JRgFJzJ!efpJGWuPhYczLexY19ex82nuwfs4sR_DG4JXddeClH4
di tautan ini itu akan mulai mengunduh di dalam browser. Saya memeriksa tab jaringan di elemen inspeksi itu akan mengunduh bagian-bagian file dengan AJAX setelah itu menyelesaikan semua bagian file, akan menyimpan semuanya dalam satu file di komputer secara otomatis!
saya ingin tahu apa yang mereka lakukan? Bisakah Anda menjelaskan atau menautkan ke beberapa sumber daya tentang file unduhan di dalam browser seperti itu?
juga bisa melakukannya hanya dengan javascript atau harus menggunakan beberapa plugin flash atau semacamnya?
sumber
Jawaban:
Mega menggunakan beberapa metode berbeda untuk melakukan ini: (per 27 Nov 2013)
(sumber: https://eu.static.mega.co.nz/js/download_6.js )
sumber
Implementasi dasar dari multipart in-browser downloader menggunakan Blob dan URL API dibawa ke sini . Ini mengunduh file pada 4 permintaan bersamaan dan menunjukkan kemajuan juga. Harap dicatat bahwa tampaknya pengaturan
range
tajuk biasanya bukan ide yang baik pada permintaan XHR, lihat topik ini .Saat mengunduh:
Setelah diunduh:
Topik menarik lainnya adalah menerapkan fungsi Jeda / Lanjutkan dari Mega. XHR API dari browser saat ini tidak menawarkan kemampuan itu sehingga satu-satunya kesempatan yang Anda miliki adalah mengunduh beberapa potongan berukuran kecil dan menyerah pada bagian yang diunduh dari potongan kecil Anda, seperti yang dilakukan pada Mega juga. Tapi
fetch
fitur streaming bisa digunakan untuk tujuan itu, saya belum mengeksplorasinya dengan baik tapi didokumentasikan disini .Btw, lihat proyek luar biasa ini:
sumber
MEGAcmd
Ada megacmd , antarmuka baris perintah resmi. Anda juga dapat membuatnya dari sumber di github di https://github.com/meganz/MEGAcmd
megacmd
adalah pembungkus di sekitar Mega SDK dan jika Anda memutuskan untuk mengompilasinya sendiri, Anda memerlukan dependensi yang sama (di ubuntu) seperti yang tercantum di bawah ini untuk Mega SDK.Untuk detail tentang penggunaan lihat Panduan Pengguna MEGAcmd .
Mega SDK
Mega SDK yang dapat dikompilasi dengan mengikuti langkah-langkah di halaman github . Ini termasuk
megacli
utilitas yang merupakan shell interaktif untuk menyinkronkan dan mengunduh / mengunggah.## compilation steps for ubuntu git clone --depth 1 https://github.com/meganz/sdk megasdk cd megasdk sudo apt install libcurl4-openssl-dev libc-ares-dev libssl-dev libcrypto++-dev zlib1g-dev libsqlite3-dev libfreeimage-dev libswscale-dev autogen.sh ./configure make -j 8 ## pass the number of CPUs you have to speed up compilation sudo make install
modul mega.py python (tidak digunakan lagi)
Bagi mereka yang menemukan pertanyaan ini mencari resep sebenarnya untuk mengunduh tautan dalam mode teks di sini adalah skrip python sederhana yang menggunakan modul mega.py (instal dengan
sudo pip install mega.py
):import sys import getpass #install the module with: 'sudo pip install mega.py' from mega import Mega email = '[email protected]' password = getpass.getpass(prompt='Mega password for {}:'.format(email)) mega = Mega({'verbose': True}) m = mega.login(email, password) m.download_url(sys.argv[1])
Skrip bekerja dengan python 2.7 dan mengambil URL dari tautan mega.nz.
megatools
Pada kebanyakan kotak Linux / posix Anda dapat menginstal megatools dari repositori standar, mis
Di ubuntu / debian:
Di MacOS:
Setelah terinstal, Anda akan menemukan sejumlah utilitas baris perintah, di
megadl
antaranya dapat mengunduh file bersama dan file Anda sendiri. Lihatmegadl -h
detailnya.sumber
Mulai tahun 2020, Anda dapat menggunakan Service Worker untuk mengintegrasikan kode khusus Anda dengan mulus dengan pengelola unduhan bawaan browser: https://developers.google.com/web/updates/2016/06/sw-readablestreams
Saya juga menduga Anda akan memiliki tajuk berikut agar file dapat diunduh alih-alih dilihat:
headers: { 'Content-Type': 'application/octet-stream', 'Content-Disposition': 'attachment; filename="your_filename.bin"', }
Secara pribadi saya telah menemukan pendekatan ini bekerja dengan sempurna di kedua Google Chrome di Firefox, dan saya sudah menggunakannya dalam produksi.
sumber