php下载问题,下载后文件内容是空的,图片也没有预览
有两个文件,a.php 和 b.php
点击a.php中的链接,开始对文件下载:代码如下
这是a.php
<?php $file_dir = "D:/files";$file_name = $row[1]; //这是从数据库中查找出来的echo "<a href='./b.php?file_dir=" . $file_dir . "&file_name=" . $file_name . "'>" . $row[2] . "</a>"; //点击这个链接,下载的文件名是对的,就是文件里没有内容,如果是图片,图片没有预览?>
这是b.php的全部代码
<?php $file_name = $_GET['file_name']; //文件名 $file_dir = $_GET['file_dir']; //文件路径 if(!file_exists($file_dir.$file_name)){ echo "找不到 [" . $file_dir.$file_name . "] 文件"; exit; }else{ $file=fopen($file_dir.$file_name,"r"); Header("Content-type: application/octet-stream"); Header("Accept-Ranges:bytes"); Header("Accept-Length:".filesize($file_dir.$file_name)); Header("Content-Disposition: attachment; filename=".$file_name); }?>
回复讨论(解决方案)
a.php 中是 $file_dir = "D:/files";
那么在 b.php 中的 $file_dir.$file_name 就缺少了路径符
你在 b.php 中只有 $file=fopen($file_dir.$file_name,"r"); 打开了文件,但并没有输出文件的内容
如果用 $file=fopen($file_dir.$file_name,"r"); 打开的文件是图片的话,将不能正确读出图片数据
应使用二进制方式打开:$file=fopen($file_dir.$file_name,"r b");
a.php 中是 $file_dir = "D:/files";
那么在 b.php 中的 $file_dir.$file_name 就缺少了路径符
你在 b.php 中只有 $file=fopen($file_dir.$file_name,"r"); 打开了文件,但并没有输出文件的内容
如果用 $file=fopen($file_dir.$file_name,"r"); 打开的文件是图片的话,将不能正确读出图片数据
应使用二进制方式打开:$file=fopen($file_dir.$file_name,"r b");
听懂了 但是我改成了这样 还是一样的结果 代码如下
<?php $file_name = $_GET['file_name']; //文件名 $file_dir = $_GET['file_dir']; //文件路径为当前目录 if(!file_exists($file_dir.$file_name)){ echo "找不到 [" . $file_dir.$file_name . "] 文件"; exit; }else{ $file=fopen($file_dir.$file_name,"rb"); readfile($file); Header("Content-type: application/octet-stream"); Header("Accept-Ranges:bytes"); Header("Accept-Length:".filesize($file_dir.$file_name)); Header("Content-Disposition: attachment; filename=".$file_name); ob_clean(); flush(); exit; ?>
哎哟 晕 代码里不能改字体颜色哦 重新
<?php $file_name = $_GET['file_name']; //文件名 $file_dir = $_GET['file_dir']; //文件路径为当前目录 if(!file_exists($file_dir.$file_name)){ echo "找不到 [" . $file_dir.$file_name . "] 文件"; exit; }else{ $file=fopen($file_dir.$file_name,"rb"); readfile($file); Header("Content-type: application/octet-stream"); Header("Accept-Ranges:bytes"); Header("Accept-Length:".filesize($file_dir.$file_name)); Header("Content-Disposition: attachment; filename=".$file_name); ob_clean(); flush(); exit;?>
}else{ $file = $file_dir.$file_name; Header("Content-type: application/octet-stream"); Header("Accept-Ranges:bytes"); Header("Accept-Length:".filesize($file)); Header("Content-Disposition: attachment; filename=".$file_name); readfile($file); }
成功了,首先要谢谢版主,版主说的非常好,然后必须分享一下:
是下载压缩文件的,包括压缩文件其中的文件,代码也不难
//打开文件 $file = fopen($file_dir.$file_name,"r"); //返回的文件类型 Header("Content-type: application/octet-stream"); //按照字节大小返回 Header("Accept-Ranges: bytes"); //返回文件的大小 Header("Accept-Length: ".filesize($file_dir.$file_name)); //这里对客户端的弹出对话框,对应的文件名 Header("Content-Disposition: attachment; filename=".$file_dir.$file_name); //修改之前,一次性将数据传输给客户端 echo fread($file, filesize($file_dir.$file_name)); //修改之后,一次只传输1024个字节的数据给客户端 //向客户端回送数据 $buffer=1024;// //判断文件是否读完 while (!feof($file)) { //将文件读入内存 $file_data=fread($file,$buffer); //每次向客户端回送1024个字节的数据 echo $file_data; } fclose($file);

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

URL panjang, sering berantakan dengan kata kunci dan parameter penjejakan, boleh menghalang pelawat. Skrip pemendekan URL menawarkan penyelesaian, mewujudkan pautan ringkas yang sesuai untuk media sosial dan platform lain. Skrip ini sangat berharga untuk laman web individu a

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Ini adalah bahagian kedua dan terakhir siri untuk membina aplikasi React dengan back-end Laravel. Di bahagian pertama siri ini, kami mencipta API RESTful menggunakan Laravel untuk aplikasi penyenaraian produk asas. Dalam tutorial ini, kita akan menjadi dev

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Tinjauan Landskap PHP 2025 menyiasat trend pembangunan PHP semasa. Ia meneroka penggunaan rangka kerja, kaedah penempatan, dan cabaran, yang bertujuan memberi gambaran kepada pemaju dan perniagaan. Tinjauan ini menjangkakan pertumbuhan dalam PHP Versio moden

Dalam artikel ini, kami akan meneroka sistem pemberitahuan dalam rangka kerja web Laravel. Sistem pemberitahuan di Laravel membolehkan anda menghantar pemberitahuan kepada pengguna melalui saluran yang berbeza. Hari ini, kami akan membincangkan bagaimana anda boleh menghantar pemberitahuan ov
