Téléchargement dans Codeigniter - Le type de fichier que vous essayez de télécharger n'est pas autorisé
J'obtiens l'erreur: Le type du fichier que vous tentez de télécharger n'est pas autorisée lorsque j'essaie d'uplaod n'importe quel fichier.
if(!empty($_FILES['proof_of_purchase']['name'])) {
$config['upload_path'] = './uploads/invoices/';
$config['allowed_types'] = 'gif|jpg|jpeg|png|pdf|bmp';
$config['max_size'] = '3000';
$this->load->library('upload', $config);
//if there was an error, return and display it
if (!$this->upload->do_upload('proof_of_purchase'))
{
$data['error'] = $this->upload->display_errors();
$data['include'] = 'pages/classic-register';
} else {
$data['upload_data'] = $this->upload->data();
$filename = $data['upload_data']['file_name'];
}
}
J'ai essayé beaucoup de différents fichiers - pour la plupart gif & jpeg et obtenir la même erreur à chaque fois.
var_dump($_FILES); me donne:
array(1) { ["proof_of_purchase"]=> array(5) { ["name"]=> string(28) "2010-12-04_00019.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(19) "D:\temp\php2BAE.tmp" ["error"]=> int(0) ["size"]=> int(58054) } }
J'ai vérifié le mime config et il contient de bons trucs. Exemple:
'jpeg' => array('image/jpeg', 'image/pjpeg'),
'jpg' => array('image/jpeg', 'image/pjpeg'),
'jpe' => array('image/jpeg', 'image/pjpeg'),
J'ai passé beaucoup trop de temps sur ce sujet et ça me rend fou! Toutes les idées seraient extrêmement utiles.
source d'informationauteur dangermark
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à l'aide de Codeigniter version 2.1.0 il y a un bug dans le chargement de la bibliothèque. Voir http://codeigniter.com/forums/viewthread/204725/ pour plus de détails.
Fondamentalement, ce que je n'ai fait que modifier quelques lignes de code dans le Fichier de Téléchargement de Classe (Location: ./system/libraries/Upload.php)
1) modifier la Ligne numéro 1044
à partir de:
:
2) modifier la ligne numéro 1058
à partir de:
:
Comme vous pouvez probablement voir, ligne 1058 essaie d'utiliser un tableau de valeur qui n'existe pas.
J'ai eu ces mêmes problèmes avec CI et n'ai pas été en mesure de trouver une solution sur les forums ou via google. Ce que j'ai fait est de permettre à tous les types de fichiers, de sorte que le fichier est téléchargé. Ensuite, je m'occupe de la logique manuellement afin de déterminer s'il faut autoriser/sauvegarder le fichier, ou de la supprimer et d'indiquer à l'utilisateur qu'un type de fichier n'est pas autorisé.
MODIFIER - C'est en supposant que vous utilisez CI 2 (CI 1 vous pouvez suivre le tutoriel ici pour permettre à tous les types de fichiers: http://net.tutsplus.com/tutorials/php/6-codeigniter-hacks-for-the-masters/)
Ce que j'ai fait était de créer ma propre Bibliothèque "MY_Upload" pour étendre la CI_Upload Classe, alors j'ai juste copié le CI_Upload classe et appliqué les changements décrits par Adam (merci un tas BTW pour la solution) dans ma bibliothèque personnalisée.
Cela me permet d'utiliser la norme CI syntaxe, et d'éviter le piratage des fichiers d'origine! Ma bibliothèque est automatiquement utilisé parce qu'il ne "s'étend" à l'origine, c'est une toute solution indolore et ne cassera pas si pour quelque raison vous devez remplacer les fichiers d'origine.
PS: je le fais avec la classe de log aussi pour quand je veux générer personnalisé journaux.
J'ai eu le même problème. Vous pouvez avoir besoin de vérifier si l'application reconnaît le type mime du fichier qui est en cours de téléchargement. L'ajout d'un nouveau type mime à config/mimes.php correction du problème. 🙂
C'est pour Codeigniter version 2.2. Si cette question est toujours d'actualité. J'ai tracé la faute dans le fichier system/libraries/upload.php fichier de fonction:
protected function _file_mime_type($file)
à la ligne 1032 et ligne 1046:$this->file_type = $matches[1];
Quand j'étais en téléchargeant un fichier avec l'extension .txt la déclaration à la ligne 1046 semble attribuer une valeur incorrecte de
'text/x-asm'
à$this->file_type
qui est plus tard par rapport à'text/plain'
et depuis mime types ne correspondent pas, le test échoue et les signaux inappropriée d'un type de fichier et le message d'erreur:Solution, pas sûr, mais quick fix qui semble fonctionner, à condition de changement de ligne de 1032 à
NOT
afin qu'il se lise:if (!function_exists('finfo_file'))
au lieu de:if (function_exists('finfo_file'))
. J'espère que cela peut aider quelqu'un.La solution est de remplacer le Upload.php dans le système/bibliothèques/par Upload.php de CodeIgniter v2.0.3
Ce problème est provoqué par ne pas avoir le PHP extension FileInfo. La fonction de la classe upload utilise est une partie de cette extension.
http://www.php.net/manual/en/ref.fileinfo.php
Si vous ne souhaitez pas modifier les fichiers système. Juste essayer ceci:
Ouvrir
system/libraries/Upload.php
(méthodedo_upload()
ligne 205) et le faireEssayez de télécharger le fichier.
Ajouter un type de fichier, que vous voyez dans
var_dump()
àapplication/config/mimes.php
.Petit exemple: vous avez un problème avec
.docx
. Essayez d'ajouter:À
application/config/mimes.php
.Le même problème que j'ai eu, quand j'essaie de faire un formulaire d'Upload pour télécharger,
".xlsx" des fichiers, qui dans CodeIgniter est mimes.php le fichier a une entrée dans ce tableau, pour représenter "xlsx" extensions de fichier.
Donc, ici, à la suite de lienj'ai décrit ce que ça prend pour obtenir par le biais de ce problème et trouver la solution!
Cordialement,
Randika
C'est probablement la peine de vérifier que vous avez la dernière version de l'application/config/mimes.php qu'au lieu de définir une variable $mimes maintenant tout simplement renvoie un tableau.
nouveau mimes.php
return array
vieux mimes.php
$mimes = array
Si vous avez encore l'ancienne version de mimes.php l'Common.php fonction &get_mimes() renvoie un tableau vide.
Cela a l'effet d'entraînement de la rupture Upload.php
Une fois que j'ai tracé de cette, tout fonctionnait bien 🙂
1) Permettre à tous les types de fichiers.
2) définir Manuellement une règle de validation avec php traditionnelles d'accepter ou de rejeter les types de fichiers.
3) si les règles de validation sont obéi, puis les télécharger à l'aide de CI de téléchargement helper.