Nah, yang ini sepertinya cukup sederhana, dan memang begitu. Yang harus Anda lakukan untuk mengunduh file ke server Anda adalah:
file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));
Hanya ada satu masalah. Bagaimana jika Anda memiliki file besar, seperti 100mb. Kemudian, Anda akan kehabisan memori, dan tidak dapat mengunduh file.
Apa yang saya inginkan adalah cara untuk menulis file ke disk saat saya mengunduhnya. Dengan begitu, saya bisa mengunduh file yang lebih besar, tanpa mengalami masalah memori.
Jawaban:
Sejak PHP 5.1.0,
file_put_contents()
mendukung penulisan sepotong demi sepotong dengan memberikan stream-handle sebagai$data
parameter:Dari manual:
(Terima kasih Hakre .)
sumber
allow_fopen_url Off
diatur dalam php.ini (ide bagus untuk keamanan), skrip Anda akan rusak.file_get_contents()
tidak akan berhasil jika itu terjadi (lihat OP).fopen
; mencegah efek buruk pada gambar dan file teks biasa lainnya.sumber
Coba gunakan cURL
Saya tidak yakin tapi saya percaya dengan
CURLOPT_FILE
opsi yang ditulisnya saat menarik data, yaitu. tidak buffered.sumber
$fh = fopen('/path/to/download/the/file/to.zip', 'w');
dan tutupfclose($fh);
setelahcurl_close($ch);
. Dan mengaturCURLOPT_FILE => $fh
Jawaban prodigitalson tidak berhasil untuk saya. Saya mendapat
missing fopen in CURLOPT_FILE
lebih banyak detail .Ini berfungsi untuk saya, termasuk url lokal:
sumber
.php
file dan jalankan di server tujuanPengunduh:
sumber
set_time_limit (24 * 60 * 60);
harus dimasukkan ke dalam lingkaran. Tidak ada efek di awal naskah.sumber
Ada 3 cara:
Anda dapat menemukan contoh dari sini .
sumber
Gunakan metode sederhana dalam php
copy()
Catatan: jika file tujuan sudah ada, itu akan ditimpa
Salin PHP () Fungsi
Catatan: Anda harus mengatur izin 777 untuk folder tujuan. Gunakan metode ini saat Anda mengunduh ke mesin lokal Anda.
Catatan Khusus: 777 adalah izin dalam sistem berbasis Unix dengan izin baca / tulis / eksekusi penuh untuk pemilik, grup, dan semua orang. Secara umum kami memberikan izin ini untuk aset yang tidak perlu disembunyikan dari publik di server web. Contoh: folder gambar.
sumber
Saya menggunakan ini untuk mengunduh file
sumber
Solusi PHP 4 & 5:
readfile () tidak akan menyajikan masalah memori, bahkan saat mengirim file besar, sendiri. URL dapat digunakan sebagai nama file dengan fungsi ini jika pembungkus fopen telah diaktifkan.
http://php.net/manual/en/function.readfile.php
sumber