目錄
回复讨论(解决方案)
首頁 後端開發 php教程 php下载问题,下载后文件内容是空的,图片也没有预览

php下载问题,下载后文件内容是空的,图片也没有预览

Jun 23, 2016 pm 02:12 PM

有两个文件,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;?>
登入後複製

本帖最后由 xuzuning 于 2013-06-08 16:08:01 编辑

    }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);
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles