Bonjour à tous.
je veux juste forcer l'utilisateur de télécharger un fichier sans l'ouvert dans la page web (Fichier : .txt .pdf ... ect)
Danx![]()
Bonjour à tous.
je veux juste forcer l'utilisateur de télécharger un fichier sans l'ouvert dans la page web (Fichier : .txt .pdf ... ect)
Danx![]()
bonjour,
Après test (avec le script de http://php.developpez.com/faq/langag..._forcedownload et celui de http://www.farkess.com/web/tutoriels...de-javascript/)
un ‘ooops’ :
Tout va bien en tous cas jusqu’à un filesize de 82 MB,
Par contre, si je test « 167.39 Mb », en réponse Firefox me propose de télécharger cette archive de « Document (230 octets) ».
Sachant que tous les fichiers offerts en « DOWNload » ont tous été ajoutés par des visiteurs en « UPload », et que j’imagine que toutes les limites UP (genre : upload_max_filesize : 300 MB) sont au moins valides pour le DOWN, je ne sais pas où chercher (mais ce n'est peut-être pas si vrai ?).
Pour info :
Les fichiers sont à priori des zip ou des videos => grandes tailles;
Le projet est sur infomaniak
Merci pour vos astuces et conseils,
Pat
Hello
Pour les gros fichiers (qui pourraient avoir la tendance à proposer de télécharger des document de quelques Ko), il convient de segmenter le readfile.
et donc de remplacer le simple
par quelque chose du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part readfile($fullPath);
Hope it helps
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #readfile($fullPath); $size = filesize( $fullPath ); $chunksize = 1 * (1024 * 1024); // how many bytes per chunk if ($size > $chunksize) { $handle = fopen($fullPath, 'rb'); $buffer = ''; while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; ob_flush(); flush(); } fclose($handle); } else { readfile($fullPath); }
Pat
PS : peut-être que cela pourrait être mis en note dans le
http://php.developpez.com/faq/?page=..._forcedownload
Mr Sabotage ?
Partager