Heim Backend-Entwicklung PHP-Tutorial 让codeigniter与swfupload整合的最佳解决方案_php实例

让codeigniter与swfupload整合的最佳解决方案_php实例

May 17, 2016 am 08:42 AM
codeigniter 整合

codeigniter是一款轻量,便捷的MVC框架,最近的项目涉及到批量上传,于是,就是用了swfupload这个插件,虽然网上有很多关于ci与swfupload的帖子,不过,并不是很完整,所以,这里综合各家优点,经过自己实际经验,做了下整理。

问题1:获取不到文件类型?

回答: 由于SWFUPLOAD所有类型文件的MIME均为application/octet-stream,故使用Codeigniter自带的上传类无法准确获取是否为图片,根据ci官方的wiki已经给出了解答

In your view file, include the SWFUpload javascript file:

复制代码 代码如下:

In your controller, pass “Filedata” as the name value for the do_upload function:
$this->upload->do_upload('Filedata')
In your mimes.php file, add ‘application/octet-stream' for all allowed image formats
'gif'    =>    array('image/gif', 'application/octet-stream'),
'jpeg'    =>    array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'jpg'    =>    array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'jpe'    =>    array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'png'    =>    array('image/png',  'image/x-png', 'application/octet-stream'),

问题2:带有session验证的后台,会导致上传后退出登陆的状况

回答:

一般方法:swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。
上传页的JS里面,可以获取当前的SESSION_ID的。

ci中的状态:一般情况下,因为诸如uploadify,swfupload采用的都是flash客户端,这样它们产生的useragent与用户使用浏览器的user-agent必然不同。所以,虽然用户登录了你的系统产生了一个session,但是当触发上传程序时会产生另一个session(在上述useragent选项开启的情况下)。

所以,不是session丢失了,而是当你上传文件时,CI为uploadify另外创建了一个session。

解决方法1:将$config['sess_match_useragent']设置成FALSE,重试。

解决方法2(推荐):为了安全起见,不建议使用第1条解决方案,而是使用另外的验证方法,比如在每次上传时,在url中附加一个token与服务器端的token比对(比如这个token可以是用户名的hash值)。具体实现方法请参考stblog的上传验证实现(使用的是swfupload)。----我尝试了这个方法,重点在于,如果你的session类是放在autoload里自动加载的,那么,这样肯定是失败的,解决办法是,新建一个类,例如MY_Controller继承于CI_Controller,用于后台登陆,需要权限判断后台处理,讲upload类继承于CI_Controller这样的话,就不经过session类的验证了,当然上传还是得验证,不过可以用post_params传值进行验证:

示例:

复制代码 代码如下:
class Upload extends CI_Controller {
//*******
//*****
}
//~~~~~~~~~~~~~~~~~
class client_photo extends MY_Controller {
    function __construct() {
        parent::__construct();
    }
 function index() {
}
}
//~~~~~~~~~~~~~~~~~~~~~
class MY_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('session');
}
}
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie benutzerdefinierte Middleware in CodeIgniter So implementieren Sie benutzerdefinierte Middleware in CodeIgniter Jul 29, 2023 am 10:53 AM

So implementieren Sie benutzerdefinierte Middleware in CodeIgniter Einführung: In der modernen Webentwicklung spielt Middleware eine wichtige Rolle in Anwendungen. Sie können verwendet werden, um eine gemeinsame Verarbeitungslogik auszuführen, bevor oder nachdem die Anforderung den Controller erreicht. CodeIgniter unterstützt als beliebtes PHP-Framework auch den Einsatz von Middleware. In diesem Artikel wird die Implementierung benutzerdefinierter Middleware in CodeIgniter vorgestellt und ein einfaches Codebeispiel bereitgestellt. Middleware-Übersicht: Middleware ist eine Art Anfrage

CodeIgniter-Middleware: Beschleunigen Sie die Reaktionsfähigkeit der Anwendung und das Rendern von Seiten CodeIgniter-Middleware: Beschleunigen Sie die Reaktionsfähigkeit der Anwendung und das Rendern von Seiten Jul 28, 2023 pm 06:51 PM

CodeIgniter-Middleware: Beschleunigung der Anwendungsreaktionsfähigkeit und Seitenwiedergabe Übersicht: Da Webanwendungen immer komplexer und interaktiver werden, müssen Entwickler effizientere und skalierbarere Lösungen verwenden, um die Anwendungsleistung und Reaktionsfähigkeit zu verbessern. CodeIgniter (CI) ist ein leichtes PHP-basiertes Framework, das viele nützliche Funktionen bietet, darunter Middleware. Middleware ist eine Reihe von Aufgaben, die ausgeführt werden, bevor oder nachdem die Anfrage den Controller erreicht. In diesem Artikel wird die Verwendung vorgestellt

Integration und Nutzung von Spring Boot und NoSQL-Datenbank Integration und Nutzung von Spring Boot und NoSQL-Datenbank Jun 22, 2023 pm 10:34 PM

Mit der Entwicklung des Internets sind Big-Data-Analyse und Echtzeit-Informationsverarbeitung zu einem wichtigen Bedarf für Unternehmen geworden. Um diesen Anforderungen gerecht zu werden, erfüllen herkömmliche relationale Datenbanken nicht mehr die Anforderungen der Geschäfts- und Technologieentwicklung. Stattdessen ist die Verwendung von NoSQL-Datenbanken zu einer wichtigen Option geworden. In diesem Artikel besprechen wir die Verwendung von SpringBoot, das in NoSQL-Datenbanken integriert ist, um die Entwicklung und Bereitstellung moderner Anwendungen zu ermöglichen. Was ist eine NoSQL-Datenbank? NoSQL ist nicht nur SQL

So verwenden Sie den Datenbankabfrage-Builder (Query Builder) im CodeIgniter-Framework So verwenden Sie den Datenbankabfrage-Builder (Query Builder) im CodeIgniter-Framework Jul 28, 2023 pm 11:13 PM

Einführung in die Methode zur Verwendung des Datenbankabfrage-Builders (QueryBuilder) im CodeIgniter-Framework: CodeIgniter ist ein leichtes PHP-Framework, das viele leistungsstarke Tools und Bibliotheken bereitstellt, um Entwicklern die Entwicklung von Webanwendungen zu erleichtern. Eine der beeindruckendsten Funktionen ist der Datenbankabfrage-Builder (QueryBuilder), der eine übersichtliche und leistungsstarke Möglichkeit zum Erstellen und Ausführen von Datenbankabfrageanweisungen bietet. In diesem Artikel wird die Verwendung von Co. vorgestellt

Verwenden Sie das PHP-Framework CodeIgniter, um eine Echtzeit-Chat-Anwendung zu entwickeln und bequeme Kommunikationsdienste bereitzustellen Verwenden Sie das PHP-Framework CodeIgniter, um eine Echtzeit-Chat-Anwendung zu entwickeln und bequeme Kommunikationsdienste bereitzustellen Jun 27, 2023 pm 02:49 PM

Mit der Entwicklung des mobilen Internets ist Instant Messaging immer wichtiger und beliebter geworden. Für viele Unternehmen ist Live-Chat eher ein Kommunikationsdienst und bietet eine bequeme Kommunikationsmethode, mit der sich geschäftliche Probleme schnell und effektiv lösen lassen. Auf dieser Grundlage wird in diesem Artikel erläutert, wie Sie mit dem PHP-Framework CodeIgniter eine Echtzeit-Chat-Anwendung entwickeln. Verstehen Sie das CodeIgniter-Framework CodeIgniter ist ein leichtes PHP-Framework, das eine Reihe einfacher Tools und Bibliotheken bereitstellt, um Entwicklern schnell zu helfen

CodeIgniter-Middleware: Bietet sichere Funktionen zum Hoch- und Herunterladen von Dateien CodeIgniter-Middleware: Bietet sichere Funktionen zum Hoch- und Herunterladen von Dateien Aug 01, 2023 pm 03:01 PM

CodeIgniter-Middleware: Bietet sichere Funktionen zum Hochladen und Herunterladen von Dateien. Einführung: Das Hochladen und Herunterladen von Dateien sind sehr häufige Funktionen bei der Entwicklung von Webanwendungen. Aus Sicherheitsgründen erfordert der Umgang mit Datei-Uploads und -Downloads jedoch häufig zusätzliche Sicherheitsmaßnahmen. CodeIgniter ist ein beliebtes PHP-Framework, das eine Fülle von Tools und Bibliotheken bereitstellt, um Entwickler beim Erstellen sicherer und zuverlässiger Webanwendungen zu unterstützen. In diesem Artikel wird erläutert, wie Sie die CodeIgniter-Middleware zum Implementieren sicherer Dateien verwenden

PHP-Entwicklung: Verwendung von CodeIgniter zur Implementierung des MVC-Musters und der RESTful-API PHP-Entwicklung: Verwendung von CodeIgniter zur Implementierung des MVC-Musters und der RESTful-API Jun 16, 2023 am 08:09 AM

Da sich Webanwendungen ständig weiterentwickeln, ist es wichtig, Anwendungen schneller und effizienter zu entwickeln. Und da RESTful API in Webanwendungen weit verbreitet ist, müssen Entwickler verstehen, wie RESTful API erstellt und implementiert wird. In diesem Artikel besprechen wir, wie man das MVC-Muster und die RESTful-API mithilfe des CodeIgniter-Frameworks implementiert. Einführung in das MVC-Muster MVC (Model-Vie

Wie verwende ich das CodeIgniter5-Framework in PHP? Wie verwende ich das CodeIgniter5-Framework in PHP? Jun 01, 2023 am 11:21 AM

CodeIgniter ist ein leichtes PHP-Framework, das die MVC-Architektur nutzt, um eine schnelle Entwicklung zu unterstützen und allgemeine Aufgaben zu vereinfachen. CodeIgniter5 ist die neueste Version des Frameworks und bietet viele neue Funktionen und Verbesserungen. In diesem Artikel wird erläutert, wie Sie mit dem CodeIgniter5-Framework eine einfache Webanwendung erstellen. Schritt 1: CodeIgniter5 installieren Das Herunterladen und Installieren von CodeIgniter5 ist sehr einfach. Befolgen Sie einfach diese Schritte: Laden Sie die neueste Version herunter

See all articles