Wenn ich derzeit keine Erweiterungen für die Klasse bereitstelle, sind keine Erweiterungen zulässig. Ich möchte alle Erweiterungen zulassen. Gibt es eine Möglichkeit, dies zu tun, ohne den Kern zu hacken?
Wie lässt sich die CodeIgniter-Datei-Upload-Klasse dazu bringen, alle Erweiterungen zu akzeptieren?
Ali
In Codeigniter 2 müssen Sie einfach erlaubte Typen wie folgt definieren:
$config['allowed_types'] = '*';
-
Funktioniert auch in CodeIgniter 3
– moveax
25. Januar 2018 um 11:56 Uhr
Was ich mache ist:
$ext=preg_replace("/.*\.([^.]+)$/","\\1", $_FILES['userfile']['name']);
$fileType=$_FILES['userfile']['type'];
$config['allowed_types'] = $ext.'|'.$fileType;
Das macht alle Dateien in jedem Funktionsaufruf automatisch erlaubt.
Alan Sturm
Die Antwort auf Ihre direkte Frage: Nein, es gibt keine Möglichkeit, dies zu tun, ohne den Kern zu überschreiben
Die gute Nachricht ist, dass Sie es vermeiden können, den Kern zu hacken, laut Handbuch
Als zusätzlichen Bonus erlaubt CodeIgniter Ihren Bibliotheken, native Klassen zu erweitern, wenn Sie einfach nur einige Funktionen zu einer vorhandenen Bibliothek hinzufügen müssen. Oder Sie können sogar native Bibliotheken ersetzen, indem Sie identisch benannte Versionen in Ihrem Anwendungs-/Bibliotheksordner ablegen.
Um also einen Drop-in-Ersatz für Ihre Bibliothek zu haben, könnten Sie Upload.php in Ihre kopieren
application/libraries
Ordner und fügen Sie dann Ihre benutzerdefinierte Logik zu dieser Upload.php-Datei hinzu. Code Igniter fügt diese Datei stattdessen ein, wenn Sie die Upload-Bibliothek laden.
Alternativ könnten Sie Ihre EIGENE benutzerdefinierte Uploader-Klasse erstellen, die das Original erweitert und nur die Funktion is_allowed_filetype verfeinert.
application/libraries/MY_Upload.php
class MY_Upload Extends CI_Upload{
function is_allowed_filetype(){
//my custom code here
}
}
Sie werden überlesen wollen das Änderungsprotokoll wenn Sie ein Upgrade durchführen, aber dies ermöglicht es Ihnen, Ihren Code und den Kerncode in separaten Universen zu behalten.
-
Wie läuft die Magento-Codierung, Alan?
– Ali
10. Juni 2009 um 1:56 Uhr
Bisher sieht es so aus, als wäre das nur über einen Hack möglich.
Ich habe ein eingefügt return true
in Zeile 556 in system/libraries/Upload.php.
$config['allowed_types'] = '*';
Das lädt beliebige Dateiformate wie .exe oder .jpegs extra hoch …
sfan
Wenn alles nicht funktioniert, ordnen Sie die zulässige Typreihenfolge wie im ersten Videoformat neu an
$config['allowed_types'] = 'mp4|jpg|png|'
Es wird in meinem Fall funktionieren, also habe ich es geteilt, wenn möglich, es auszuprobieren.
Sie müssen lediglich diese Bedingung ersetzen:
if (! $this->is_allowed_filetype())
{
$this->set_error('upload_invalid_filetype');
return false;
}
Mit:
if (count($this->allowed_types) && !$this->is_allowed_filetype())
{
$this->set_error('upload_invalid_filetype');
return false;
}