Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Memantau dan Menggemakan Saiz Fail yang Dimuat Naik dalam Masa Nyata Semasa Mencegah Penyekatan Pelayan dan Pelanggan?
Membaca dan Menggemakan Saiz Fail yang Dimuat Naik dalam Masa Nyata
Isu:
Bagaimana untuk membaca dan menggemakan saiz fail fail yang dimuat naik yang ditulis ke pelayan dalam masa nyata tanpa menyekat kedua-dua pelayan dan klien?
Penyelesaian:
Pelayan (cth., PHP):
<code class="php"><?php $filename = $_SERVER["HTTP_X_FILENAME"]; $input = fopen("php://input", "rb"); $file = fopen($filename, "wb"); stream_copy_to_stream($input, $file); fclose($input); fclose($file); echo "upload of " . $filename . " successful"; ?></code>
<code class="php"><?php header("Content-Type: text/event-stream"); header("Cache-Control: no-cache"); header("Connection: keep-alive"); $filename = $_GET["filename"]; $filesize = $_GET["filesize"]; clearstatcache(true, $filename); $data = filesize($filename); while ($data < $filesize) { sendMessage($data); clearstatcache(true, $filename); $data = filesize($filename); usleep(20000); } function sendMessage($data) { echo "data: $data\n\n"; flush(); } ?></code>
Pelanggan (cth., JavaScript):
<code class="javascript">const handleFile = (event) => { const [file] = input.files; const headers = new Headers(); headers.append("x-filename", file.name); const request = new Request("data.php", { method: "POST", headers: headers, body: file, }); fetch(request); startSSE(file.name, file.size); };</code>
<code class="javascript">function startSSE(filename, filesize) { const source = new EventSource(`stream.php?filename=${filename}&filesize=${filesize}`); source.addEventListener("message", (e) => { const data = parseInt(e.data); progress.value = data; }); }</code>
Pertimbangan Keselamatan:
Atas ialah kandungan terperinci Bagaimana untuk Memantau dan Menggemakan Saiz Fail yang Dimuat Naik dalam Masa Nyata Semasa Mencegah Penyekatan Pelayan dan Pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!