文件\图片上传,简单粗暴
本帖最后由 xiaozhuaisnow 于 2013-7-2 17:07 编辑最近因项目需要图片和文件上传,要求图片上传后可以自动的等比剪切,生成自己后台设置或者自定义的尺寸。空值附件及图片大小等等。
找了找网上很多开源的代码,结果发现都不符合自己的需要。
最终直接选定swfupload和ThinkImage这两个东东。发现经过整理组合不是一般的强悍。
直接上附件(只能上传骨架版的),自己看吧
下面的bug可以自己关闭,在页面中debug: 直接设置false即可。
看到图片的红色框框内的东西是你上传成功自动加载的,原来是图片的缩略图,因为我要做成简单粗暴的,所以只有url的,点击url可查看或者下载自己上传的文件内容。
这个可以根据自己需求自定义。
2,如何设置图片自动剪切成自己想要的尺寸。在upload.php文件中(类别判断瞎写的,可根据自己的动手改)
<?php
include_once './ThinkImage/ThinkImage.class.php';
$ext_arr = array(
'gif', 'jpg', 'jpeg', 'png', 'bmp','flv',
'swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb',
'doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'
);
$pic_arr=array('gif', 'jpg', 'jpeg', 'png', 'bmp');
$attachment_arr=array('doc', 'docx', 'xls', 'xlsx', 'ppt','zip', 'rar', 'gz', 'bz2');
if (empty($_FILES['Filedata'])===false){//初次过滤
$file=$_FILES['Filedata'];
$filename=$file['name'];
$one_type=substr(strrchr($filename,'.'),1);
//exit(0);
if (in_array($one_type,$ext_arr)){
if (in_array($one_type,$pic_arr) || in_array($one_type,$attachment_arr)){ //允许小类型过滤
$tmp_name = $_FILES['Filedata']['tmp_name'];
$path='../../uploadfile/file/';
$new_file_name = $path.date("YmdHis").rand(10000, 99999).'.'.$one_type;
if (move_uploaded_file($tmp_name, $new_file_name) === false){
echo 'error';
}else{
//可在此添加
if (in_array($one_type,$pic_arr)){//类别判定
$newname = $path.date("YmdHis").rand(20000, 99999).'.'.$one_type;
$img = new ThinkImage(THINKIMAGE_GD, $new_file_name);
$img->thumb(100, 100)->save($newname); //这里设置图片剪切尺寸
@unlink($new_file_name);
$new_file_name=$newname;
}
echo 'FILEID:'.$new_file_name;
}
}else{
echo '不是允许的小类型';
}
}else{
echo '不是允许类型';
}
}else{
echo '请选择文件';
}
exit(0);
下面给出thinkimage图片剪切效果,为了展示性能,直接一张win7桌面大图剪切成100 X 100 的。tp确实图片剪切的不错
补充一下,如果有不能上传,请仔细检查自己设定的路径和文件夹权限。特别是linux服务器建议直接777
支持! 貌似CI的image类文件也有截取功能 本帖最后由 xiaozhuaisnow 于 2013-7-7 19:13 编辑
gogogo1027 发表于 2013-7-2 19:42 static/image/common/back.gif
貌似CI的image类文件也有截取功能
ci的图像处理类不太好用,相比来说tk的更加简单粗暴,而且处理图像的还不错。自动等比剪切
ci的代码下面只是剪切
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width']= 75;
$config['height'] = 50;
$this->load->library('image_lib', $config);
$this->image_lib->resize();//是不是这么用不清楚,没有实际操作,从文档上cp的。这个应该是最基础的配置.....需求稍微复杂一点估计更多
ci的配置比较麻烦,下面是tk的,下面是tk剪切后直接剪切图像+存储到指定目录+删除旧图像。
$img = new ThinkImage(THINKIMAGE_GD, $new_file_name);
$img->thumb(100, 100)->save($newname); //这里设置图片剪切尺寸
@unlink($new_file_name);
$new_file_name=$newname;
对比一下就知道那个方便了,不是说ci的img不好,而是根据需求灵活运用
xiaozhuaisnow 发表于 2013-7-7 19:12 static/image/common/back.gif
ci的图像处理类不太好用,相比来说tk的更加简单粗暴,而且处理图像的还不错。自动等比剪切
ci的代码下面只 ...
完全同意。
要灵活运用。
CI 最牛的地方就是可以任意扩展。
swfupload貌似在火狐浏览器会有点问题。。有没有什么解决方法 kinwyb 发表于 2013-7-10 08:34 static/image/common/back.gif
swfupload貌似在火狐浏览器会有点问题。。有没有什么解决方法
经测试,在安装flash插件的前提下,ie 8 9 10 火狐google 浏览器均无问题,如果有问题,请查看flash插件是否被激活,或者更新浏览器flash插件。以前在火狐中我碰到了无法上传的问题(是突然某一天不能用了),查看了一下,发现火狐浏览器地址栏的最左边提示flash插件未激活。更新插件就ok。建议测试环境下打开debug模式。可以查看究竟是哪里出了问题。
mark 以后应该用得着,看起来貌似还不错. 先保存下来 很好
页:
[1]
2