2
33

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
  1. define('FILES_DIR', ROOT_DIR . DIRECTORY_SEPARATOR . 'files');
  2.  
  3. function upload($lang, $slice=false) {
  4.     $maxfilesize=$slice ? false : 1000000;
  5.  
  6.     $action='init';
  7.     if (isset($_POST['upload_put'])) {
  8.         $action='upload';
  9.     }
  10.  
  11.     $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
  1.     $upload = build('upload', $lang, true);

Assurez-vous que l'action fileupload est activée dans aliases.inc :

aliases.inc
  1. $aliases = array(
  2.     array(
  3.         'captcha'                   => 'captcha',
  4. //      'avatar'                    => 'avatar',
  5.         'rss'                       => 'rssfeed',
  6.         '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.

3%

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 :

  1.     $upload = false;

Désactivez l'action fileupload dans aliases.inc:

  1. $aliases = array(
  2.     array(
  3.         'captcha'                   => 'captcha',
  4. //      'avatar'                    => 'avatar',
  5.         'rss'                       => 'rssfeed',
  6. //      '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 :

  1.     $filetypes=array('video/mp4');

Nommez la fonction uploadvideo. Retirez tout le code qui teste si le fichier est téléchargé en plusieurs parties :

  1. function uploadvideo($lang) {
  2.     $maxfilesize=false;
  1.     $videoupload_url = url('videoupload', $lang);
  1.     $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 :

  1.     $filetypes=array('video/mp4');
  1.     $fname = FILES_DIR . DIRECTORY_SEPARATOR . 'videos' . DIRECTORY_SEPARATOR . $name;

Ajoutez une URL dans aliases.inc pour l'action videoupload :

  1. $aliases = array(
  2.     array(
  3.         'captcha'                   => 'captcha',
  4. //      'avatar'                    => 'avatar',
  5.         'rss'                       => 'rssfeed',
  6.         'file/upload'               => 'fileupload',
  7.         '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 :

  1. <p id="videouploader"><img src="/files/images/html5video.png" alt="" title="Télécharger une vidéo" /></p>
  1.     $('#videouploader img').on('click', function(e) { e.preventDefault(); file.click(); });
  1.             $('#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

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].