Pembangunan PHP...LOGIN

Pembangunan PHP dan pelaksanaan modul fungsi statistik kiraan muat turun (2)

Buat fail download.php untuk membalas tindakan muat turun, kemas kini bilangan muat turun fail yang sepadan dan lengkapkan muat turun melalui penyemak imbas.

Menurut parameter url, pertanyaan untuk mendapatkan data yang sepadan, semak sama ada fail yang hendak dimuat turun wujud, jika wujud, kemas kini nombor muat turun data yang sepadan +1, bilangan muat turun fail dalam pangkalan data +1, dan gunakan pengepala () melaksanakan fungsi muat turun. Jika fail tidak wujud, "Fail tidak wujud!"

Perlu dinyatakan bahawa fungsi header() digunakan untuk memaksa fail dimuat turun, dan nama fail boleh ditetapkan untuk disimpan secara setempat selepas memuat turun.

Secara amnya, kami menggunakan program muat naik latar belakang untuk menamakan semula fail yang dimuat naik dan menyimpannya ke pelayan Fail yang biasa digunakan dinamakan mengikut tarikh dan masa Nama Cina bercelaru. Untuk fail yang kami muat turun secara setempat, kami boleh menggunakan header("Content-Disposition: attachment; filename=" .$filename) untuk menetapkan nama fail kepada nama fail yang mudah dikenal pasti.

<?php
require('conn.php');
$id = (int)$_GET['id'];

if(!isset($id) || $id==0) die('参数错误!');
$query = mysqli_query($link,"select * from downloads where id='$id'");
$row = mysqli_fetch_array($query);
if(!$row) exit;
$filename = iconv('UTF-8','GBK',$row['filename']);//中文名称注意转换编码
$savename = $row['savename']; //实际在服务器上的保存名称
$myfile = 'files/'.$savename;  //文件名称
if(file_exists($myfile)){
   mysqli_query($link,"update downloads set downloads=downloads+1 where id='$id'");
   $file = @fopen($myfile, "r"); 
   header("Content-type: application/octet-stream");
   header("Content-Disposition: attachment; filename=" .$filename );
   while (!feof($file)) {
      echo fread($file, 50000);  //打开文件最大字节数为50000
   }
   fclose($file);
   exit;
}else{
   echo '文件不存在!';
}
?>

Nota:

Pustaka fungsi iconv boleh melengkapkan penukaran antara pelbagai set aksara dan merupakan perpustakaan fungsi asas yang sangat diperlukan dalam pengaturcaraan PHP.

file_exists() Fungsi menyemak sama ada fail atau direktori wujud. Mengembalikan benar jika fail atau direktori yang dinyatakan wujud, sebaliknya palsu. Fungsi

fopen() membuka fail atau URL. Jika pembukaan gagal, fungsi ini mengembalikan FALSE. "r" dibuka dalam mod baca sahaja dan menghalakan penuding fail ke pengepala fail.

feof() Fungsi mengesan sama ada hujung fail (eof) telah dicapai. Fungsi

fread() membaca fail (selamat untuk fail binari).

fclose()Fungsi menutup fail yang terbuka.



bahagian seterusnya
<?php require('conn.php'); $id = (int)$_GET['id']; if(!isset($id) || $id==0) die('参数错误!'); $query = mysqli_query($link,"select * from downloads where id='$id'"); $row = mysqli_fetch_array($query); if(!$row) exit; $filename = iconv('UTF-8','GBK',$row['filename']);//中文名称注意转换编码 $savename = $row['savename']; //实际在服务器上的保存名称 $myfile = 'files/'.$savename; //文件名称 if(file_exists($myfile)){ mysqli_query($link,"update downloads set downloads=downloads+1 where id='$id'"); $file = @fopen($myfile, "r"); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=" .$filename ); while (!feof($file)) { echo fread($file, 50000); //打开文件最大字节数为50000 } fclose($file); exit; }else{ echo '文件不存在!'; } ?>
babperisian kursus