Maison > développement back-end > Problème PHP > Comment résoudre le problème de l'échec du fichier compressé PHP

Comment résoudre le problème de l'échec du fichier compressé PHP

藏色散人
Libérer: 2023-03-06 12:42:01
original
3344 Les gens l'ont consulté

Le fichier compressé PHP a échoué en raison du manque d'instructions de code pertinentes. La solution consiste à ajouter l'instruction "ob_clean();flush();"

Comment résoudre le problème de l'échec du fichier compressé PHP

Recommandé : "Tutoriel vidéo PHP"

PHP implémente la fonction de téléchargement de fichiers, indiquant que le package compressé est endommagé et ne peut pas être ouvert Solution ouverte

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

// 文件下载

public static function downFile($id,$admin_id,$cid,$type)

{

$company = checkAdminCompany($admin_id,$cid);

        if (!$company) {

            return [

                'status' => -4,

                'statusMsg' => '公司不存在'

            ];

        }

        if ($type=='file') {

        // 判断是否有权限下载文件

$checkFileRole = self::checkFileRole($admin_id,$cid,$id);

if (!$checkFileRole) {

return [

'status' => 777,

'statusMsg' => '没有操作权限'

];

}

        $select_sql = "SELECT * FROM cloud_storage WHERE id in ($id)";

send_execute_sql($select_sql,$fileInfo);

        } elseif ($type == 'list') {

        // 判断是否有权限移动目录下的文件

$checkRole = self::checkRole($admin_id,$cid,$id);

if (!$checkRole) {

return [

'status' => '777',

'statusMsg' => '没有操作权限'

];

}

        $select_sql = "SELECT * FROM cloud_storage WHERE list_id = $id";

send_execute_sql($select_sql,$fileInfo);

        }

if (empty($fileInfo)) {

        return [

'status' => -400,

'statusMsg' => '文件不存在'

];

        }

  

        foreach ($fileInfo as $key => $value) {

$paths[$key] = $fileInfo[$key]['path'];

}

        //这里需要注意该目录是否存在,并且有创建的权限

$filename = 'logs/down/test.zip';

if(!file_exists($filename)){

$zip = new ZipArchive();

if ($zip->open($filename, ZipArchive::CREATE)==TRUE) {

foreach( $paths as $val){

  if(file_exists($val)){

   $zip->addFile( $val, basename($val));

  }

 }

 $zip->close();

}

}

if(!file_exists($filename)){

exit("无法找到文件");

}

header("Cache-Control: public");

header("Content-Description: File Transfer");

header('Content-disposition: attachment; filename='.basename($filename)); //文件名

header("Content-Type: application/zip"); //zip格式的

header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件

header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小

ob_clean();

flush();

@readfile($filename);

unlink($fileurl);

   exit;

}

Copier après la connexion

En fait, la plupart des erreurs sont dues au manque de

1

2

ob_clean();

flush();

Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal