2009-06-09 6 views

Répondre

58

Dans Codeigniter 2, il vous suffit de définir les types autorisés comme ceci:

$config['allowed_types'] = '*'; 
+0

Fonctionne aussi dans CodeIgniter 3 – moveax

2

Jusqu'à présent, il semble que ce ne serait possible que via un hack.

J'ai inséré un return true à la ligne 556 dans system/libraries/Upload.php.

+0

Je préfère créer une bibliothèque personnalisée plutôt que d'éditer le système/libraries/folder.La mise à jour d'une nouvelle version sur CI implique généralement le remplacement de l'ancien système/dossier (sauf system/application /) par la dernière version. CMIIW – andyk

4

La réponse à votre question directe: Non, il n'y a aucun moyen de le faire sans écraser le noyau

Pour de bonnes nouvelles est que vous pouvez éviter le piratage du noyau, per the manual

En prime, CodeIgniter permet à vos bibliothèques d'étendre les classes natives si vous avez simplement besoin d'ajouter une fonctionnalité à une bibliothèque existante. Ou vous pouvez même remplacer les bibliothèques natives par en plaçant des versions nommées identiquement dans votre dossier application/libraries.

donc, d'avoir une baisse de remplacement pour votre bibliothèque, vous pouvez copier upload.php à votre

application/libraries 
dossier

, puis ajoutez votre logique personnalisée à ce fichier upload.php. Code Igniter inclura ce fichier à la place lorsque vous chargez la bibliothèque de téléchargement.

Alternativement, vous pouvez créer votre propre classe d'uploader personnalisée qui étend l'original, et affine seulement la fonction is_allowed_filetype.

application/libraries/MY_Upload.php 
class MY_Upload Extends CI_Upload{ 
    function is_allowed_filetype(){ 
     //my custom code here 
    } 
} 

Vous voulez lire plus the changelog chaque fois que vous mettez à jour, mais cela vous permettra de garder votre code et le code de base dans des univers séparés.

+0

Comment va le codage magento Alan? –

4

Ce que je fais est:

$ext=preg_replace("/.*\.([^.]+)$/","\\1", $_FILES['userfile']['name']); 
$fileType=$_FILES['userfile']['type']; 
$config['allowed_types'] = $ext.'|'.$fileType; 

Cela fait tous les fichiers dans chaque appel de fonction admis automatiquement.

+3

Eh bien, c'est juste idiot! :-) –

0

Vous avez simplement besoin de remplacer cette condition:

 if (! $this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype'); 
      return false; 
     } 

Avec:

 if (count($this->allowed_types) && !$this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype'); 
      return false; 
     } 
0

$config['allowed_types'] = '*'; Qui téléchargera n'importe quel format de fichier comme .exe ou .jpegs ...

0

si toutes les œuvres non alors modifier l'ordre de type autorisé comme dans le premier format vidéo

$config['allowed_types'] = 'mp4|jpg|png|' 

Il aura des œuvres dans mon cas, donc je partage si possible essayer.

Questions connexes