本文目錄一覽:
php中讓文件循環下載的代碼怎麼寫?
自己寫的方法 但是在中文路徑下會 出現錯誤
/*
*查看問價夾中的子文件及其子文件夾
*$path 付文件夾路徑
*return $arr_dir 文件夾中所有文件和子文件夾的信息
*/
function selDir($path){
$arr_dir = array();
if(is_file($path)){
header(“Location: error.php”);
exit;
}
$arr_dir = scandir($path);
foreach ($arr_dir as $v){
if($v != “.” $v != “..”){
//print “hr”.$path.$v;
if(is_dir($path.’/’.$v)){
//print “hr是文件夾hr”;
$arr_dir[‘dir’][] = array(
‘fileUrl’ = $path.’/’.$v,
‘filename’ = $v,
‘type’ = ‘文件夾’,
‘cTime’ = @date(‘Y/m/d H:i’,filectime($path.’/’.$v)+8*3600),
‘mTime’ = @date(‘Y/m/d H:i’,filemtime($path.’/’.$v)+8*3600),
‘filesize’ = ‘ ‘
);
}else{
//print “hr不是是文件夾hr”;
$arr_dir[‘file’][] = array(
‘fileUrl’ = $path.’/’.$v,
‘filename’ = $v,
‘type’ = pathinfo($path.’/’.$v, PATHINFO_EXTENSION),
‘cTime’ = @date(‘Y/m/d H:i’,filectime($path.’/’.$v)+8*3600),
‘mTime’ = @date(‘Y/m/d H:i’,filemtime($path.’/’.$v)+8*3600),
‘filesize’ = filesize($path.’/’.$v)
);
}
}
}
//var_dump($arr_dir);
return $arr_dir;
}
php實現文件下載代碼~
echo “a href=’$file'”.$file.”/a”需要絕對路徑,而且注意目錄是不可以下載的。
?php
$root=”d:/”;
if(is_dir($root)){
$openHandle=opendir($root);
while(false!==($file=readdir($openHandle))){
if(!is_dir($root.$file))
echo “a href=’$root$file'”.$file.”/abr/”;
}
closedir($openHandle);
}
else {
echo “文件夾不存在”;
}
?
用PHP寫下載文件的那部分代碼
問題一:你在查詢目錄文件時同時生成一個累加的數值。GET帶過這個數值就可以了。提交以後,同一目錄下再次查詢目錄生成的列表相同,所以這個 GET 值能對應文件的。。
問題二:問題出在下列代碼處。
$file=$filename;
$filename = “./download/”.$file;
$downfilename = $file;
一開始的時候 $filename 為空值。所以 $file =” 接下來是 $downfilename = $file; 因為 $file 為空值。所以 $downfilename 同樣也為空值。然後下面的下載就會返回當前文件做為下載對象。也就是 PHP文件本身。
問題三:因為你提供下載的時候。使用的類型是數據流。而不是文件類型。瀏覽器不能確認該文件的打開方式。所以只能下載完以後再打開。如果你這麼寫:
Header(“Content-type: text/html”);
那瀏覽器就會使用 IE 或默認瀏覽器打開了。其他文件同樣道理。你可以用 filetype() 函數取得文件類型。
宗合一下:兩個文件的代碼可以合成一個。這裡明顯地址欄區別在於。列表頁沒有 GET 變量。所以你可以用以下判斷來完成:
if(!is_set($_GET[‘filename’]))
{
//這裡放文件例表的代碼。
}else{
//這裡放文件下載代碼。
}
用php如何寫下載文件代碼;都說非常簡單,幾行代碼就行,可是我寫的為何就是有錯呢?
filename=??是文件名或者文件別名,這個是下載是保存文件的默認文件名,不要帶上路徑;readfile(“”)是實際的文件,就是路徑加上文件名,不一定是絕對路徑了。filename給的參數不對了。
原創文章,作者:XYMA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/140028.html