Téléchargement de fichiers sur le serveur
Par défaut, un site web est configuré pour autoriser un administrateur à télécharger des fichiers de tout type d'au plus 1 mégaoctet dans le dossier files.
Connectez-vous comme administrateur et cliquez sur la roue sur la page d'accueil pour aller à la page Gestion.
Contenu
Cliquez sur Télécharger et choisissez un fichier local.
Si la copie a échoué, une alerte est affichée.
Assurez-vous que le serveur Apache est autorisé à écrire dans le répertoire files à la racine du site web :
$ cd /var/www/sitename.net
$ sudo chgrp www-data files
$ chmod 775 files
NOTE : Si le code en JavaScript est bloqué, le formulaire marche toujours mais sans pouvoir cacher le bouton Parcourir...
Pour changer la taille maximum d'un fichier téléchargé ou contrôler son type, éditez le bloc upload
:
upload.php
- define('FILES_DIR', ROOT_DIR . DIRECTORY_SEPARATOR . 'files');
- function upload($lang, $slice=false) {
- $maxfilesize=$slice ? false : 1000000;
- $action='init';
- if (isset($_POST['upload_put'])) {
- $action='upload';
- }
- $filetypes=false;
FILES_DIR
donne le nom du dossier dans lequel les fichiers téléchargés sont copiés.
$maxfiles
définit la taille maximum d'un fichier téléchargé en octets.
Mettez $filetypes
à la valeur d'un tableau de types MIME pour contrôler le type d'un fichier téléchargé, e.g. array('image/jpeg', 'image/jpg', 'image/png')
.
Le paramètre $slice
de la fonction upload
permet de télécharger des gros fichiers par paquets d'un mégaoctet.
Éditez l'action admin
et ajoutez true
à l'appel qui construit le bloc $upload
:
admin.php
- $upload = build('upload', $lang, true);
Assurez-vous que l'action fileupload
est activée dans aliases.inc :
aliases.inc
- $aliases = array(
- array(
- 'captcha' => 'captcha',
- // 'avatar' => 'avatar',
- 'rss' => 'rssfeed',
- 'file/upload' => 'fileupload',
Téléchargez un fichier de plusieurs mégaoctets. La progression du téléchargement est affichée après chaque confirmation du transfert d'un paquet.
La fin de la copie est notifiée comme pour un téléchargement en une seule opération.
Si la copie d'un paquet a échoué, le transfert est interrompu et une alerte est affichée.
Pour désactiver le téléchargement de fichiers, mettez le bloc $upload
à false
dans admin.php :
- $upload = false;
Désactivez l'action fileupload
dans aliases.inc:
- $aliases = array(
- array(
- 'captcha' => 'captcha',
- // 'avatar' => 'avatar',
- 'rss' => 'rssfeed',
- // 'file/upload' => 'fileupload',
Téléchargement et lecture d'une vidéo
Créer un bloc qui peut télécharger une vidéo tout en la visualisant sans attendre prend quelques minutes.
Cliquez sur l'image pour sélectionner une vidéo.
Copiez le fichier upload.php dans le dossier blocks en l'appelant uploadvideo.php.
Limitez le type de fichiers téléchargeable à des vidéos MP4 :
- $filetypes=array('video/mp4');
Nommez la fonction uploadvideo
.
Retirez tout le code qui teste si le fichier est téléchargé en plusieurs parties :
- function uploadvideo($lang) {
- $maxfilesize=false;
- $videoupload_url = url('videoupload', $lang);
- $output = view('uploadvideo', $lang, compact('token', 'maxfilesize', 'filetypes', 'videoupload_url', 'errors', 'infos'));
Notez la nouvelle action appelée videoupload
qui copie une vidéo sur le serveur.
Copiez le fichier fileupload.php dans le dossier actions en l'appelant videoupload.php.
videoupload
vérifie le type du fichier et le copie dans un sous-dossier :
- $filetypes=array('video/mp4');
- $fname = FILES_DIR . DIRECTORY_SEPARATOR . 'videos' . DIRECTORY_SEPARATOR . $name;
Ajoutez une URL dans aliases.inc pour l'action videoupload
:
- $aliases = array(
- array(
- 'captcha' => 'captcha',
- // 'avatar' => 'avatar',
- 'rss' => 'rssfeed',
- 'file/upload' => 'fileupload',
- 'video/upload' => 'videoupload',
Le code pour la vue ajoute une image qui se comporte comme un bouton et l'insertion d'une balise <video>
quand une vidéo est sélectionnée :
- <p id="videouploader"><img src="/files/images/html5video.png" alt="" title="Télécharger une vidéo" /></p>
- $('#videouploader img').on('click', function(e) { e.preventDefault(); file.click(); });
- $('#videouploader').html('<video controls src="' + URL.createObjectURL(fd) + '"></video>');
Ajouter un bouton pour interrompre le téléchargement et détruire le fichier sur le serveur et séparer la sélection et l'affichage d'une vidéo et son téléchargement sont des extensions faciles.
Commentaires