让codeigniter与swfupload整合的最佳解决方案_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了让codeigniter与swfupload整合的最佳解决方案_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2896字,纯文字阅读大概需要5分钟。
内容图文
![让codeigniter与swfupload整合的最佳解决方案_PHP教程](/upload/InfoBanner/zyjiaocheng/183/2128376920bd4db98f22886ec8793cb4.jpg)
问题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');
}
}http://www.bkjia.com/PHPjc/788608.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/788608.htmlTechArticlecodeigniter是一款轻量,便捷的MVC框架,最近的项目涉及到批量上传,于是,就是用了swfupload这个插件,虽然网上有很多关于ci与swfupload的帖子...
内容总结
以上是互联网集市为您收集整理的让codeigniter与swfupload整合的最佳解决方案_PHP教程全部内容,希望文章能够帮你解决让codeigniter与swfupload整合的最佳解决方案_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。