发一个支持html5上传+图片缩放的 类

#1 anythink

先看功能


可以上传指定格式的附件, spext标准配制

可动态更改上传允许格式,用于特殊环境

多文件夹保存规则

图片文件可开启自动缩略图

图片文件可开启自动文字水印  (图片水印请自己测试)

返回成功的参数为 json格式,可进行后期处理

 

配制参数,index的ext里:

'aUpload' => array( //上传
    'savepath' => APP_PATH , //保存的绝对根位置(不要写相对位置)
    'savedir'  => 'attachs', //相对位置,只写文件夹名称
    'tmppath' => APP_PATH .'/attachs/tmp',  //上传临时位置必须存在,否则上传失败
    'filetype' => 'jpg,png,gif,bmp,rar,zip,mp3,wma,mid,doc,pdf',   //支持的格式
    'filesize' =>4194304, //4M  
    'fileinput' =>'filedata' ,//默认文件上传域
    'dirtype' => 4,  //文件夹保存格式
    'imgresize' => TRUE,  //图片文件自动创建缩略图
    'imgmask'   => TRUE,  //图片自动加水银
    'imgmaskmsg' => 'http://www.yunbian.org ', //水印文字
    'imgresizew' => 510, //缩略图比例宽度
   ),


使用方法:


   $upfile = spClass("uploadFile");
   $upfile->set_filetypes('jpg|png|jpge|bmp');  //动态设定了允许的上传文件
   $upfile->set_diydir('blog_1');   //动态的更改了上传文件夹保存位置
   $files = $upfile->fileupload();  //开始上传,可跟一个参数,动态改变上传文件的inputname




2011-06-12 12:23:15

#2 anythink

uploadFile.rar

见附件!

用时请删除,的代码
//----自己系统开始

code..
//----自己系统结束

2011-06-12 12:24:49

#3 anythink

部分原创,部分修改~ 实用为住,无版权,大家好用就行.

2011-06-12 12:27:12

#4 anythink

用着方便就回个贴被 0 0

2011-06-12 12:28:44

#5 jake

不错,适合很多程序使用。:lol

稍候转移到认证区

2011-06-12 16:33:10

#6 anythink

:)对啊 好多都不能上传然后改变缩略图,  这个就整理完善了一下, 一条龙服务 不需要另外再调用什么东西了。

配合xhedtor使用相当好用~

2011-06-13 17:15:14

#7 anythink

修正一个小bug  294行下面 增加


if($img_info[0] < 200){ return true;}

防止过小图片加水印

2011-06-17 10:44:18

#8 虞飞

楼主给个实例吧,例如、
$files = $upfile->fileupload();  //开始上传,可跟一个参数,动态改变上传文件的inputname
这个要怎么改?最好给个完整的例子

2011-07-16 15:44:39

#9 anythink

回复 8 虞飞


   
  • $files = $upfile->fileupload('myfileinput');  //就是写 上传文件域名字 即可

2011-07-18 11:14:41

#10 虞飞

知道了,下次再用用看吧。

2011-07-18 21:40:07

#11 lhabc

不错,貌似比较简单实用

2011-08-22 12:42:44

#12 lhabc

提示指定的文件域错误呢,怎么办

2011-08-22 17:23:31

#13 lhabc

郁闷,很多服务器都不支持mime_content_type 函数

2011-08-23 11:55:22

#14 anythink

回复 13 lhabc


    mime_content_type 是自定义的,可以使用。

2011-08-25 22:37:53

#15 anythink

回复 12 lhabc


    查看表单   看 name 是否写对了

2011-08-25 22:38:18

#16 hygzs

呵呵,支持一下

2011-08-30 15:15:00

#17 lijian

Fatal error: Call to undefined function mime_content_type() in D:\wamp\www\speedphp-3.1.89\SpeedPHP\ExtensionsploadFile.php on line 126这是个上面原因啊?

2011-11-16 20:51:30

#18 jake

Fatal error: Call to undefined function mime_content_type() in D:\wamp\www\speedphp-3.1.89\SpeedPHP\ ...
lijian 发表于 2011-11-16 20:51
PHP要支持php_mime_magic.dll库,才能支持mime_content_type();函数。

2011-11-16 21:06:36

#19 lijian

这个db_attach类是怎么回事啊?

2011-11-16 21:34:33

#20 lijian

这个db_attach类是怎么回事啊?

2011-11-16 21:34:36

#21 lijian

Fatal error: Class 'db_attach' not found in D:\wamp\www\speedphp-3.1.89\SpeedPHP\spFunctions.php(149) : eval()'d code on line 1
JAKE  这个db_attach这个类是怎么回事呢,但是文件已经上传成功了 我配置好了 就是  如果我想调用文件,如何获取文件的路径和属性呢,在模板中显示。

2011-11-17 00:01:13

#22 lijian

回复 18 jake
Fatal error: Class 'db_attach' not found in D:\wamp\www\speedphp-3.1.89\SpeedPHP\spFunctions.php(149) : eval()'d code on line 1
JAKE  这个db_attach这个类是怎么回事呢,但是文件已经上传成功了 我配置好了 就是  如果我想调用文件,如何获取文件的路径和属性呢,在模板中显示

2011-11-17 00:02:08

#23 jake

回复  jake
Fatal error: Class 'db_attach' not found in D:\wamp\www\speedphp-3.1.89\SpeedPHP\spFunc ...
lijian 发表于 2011-11-17 00:02
把145行的spClass('db_attach')->create($arr);
删了就没这个提示了,这是那个作者自己的代码。

看上一行
$arr = array('bid'=>$_SESSION['tempid'],'filename'=>$localName,'filesize'=>$bytes,'path'=>$nfilename,'mime'=>$extension,'uid'=>$_SESSION['uid'],'time'=>time());
这些就是上传后的文件资料。

2011-11-17 08:23:30

#24 lijian

回复 23 jake


   非常感谢jake的帮助,呵呵 ,配置好了 ,

2011-11-17 09:08:40

#25 lijian

回复 23 jake


    jake我刚刚配好的,怎么现在就不能用了,是不是fileinput文件域名字的问题啊,能不能发个实例给我看看啊 ,先谢谢了

2011-11-17 10:11:27

#26 jake

楼上主贴就是实例。

2011-11-17 11:53:17

#27 lijian

好了  ,jake,就是那个$arr文件信息,调用的话,都是private的 ,怎么调用出来呢?

2011-11-17 12:00:03

#28 jake

好了  ,jake,就是那个$arr文件信息,调用的话,都是private的 ,怎么调用出来呢? ...
lijian 发表于 2011-11-17 12:00
public $abc = null;
然后在刚才那行里

$this->abc = $arr;

这样文件信息就是public了。

2011-11-17 12:02:16

#29 lijian

真是感谢jake的热心帮助,顶一个

2011-11-17 14:03:05

#30 lijian

再就是,jake好像有个 ,就是在可传文件下,图片大于200KB之后在页面上无法显示,这个是的吗?

2011-11-17 14:45:39

#31 jake

再就是,jake好像有个 ,就是在可传文件下,图片大于200KB之后在页面上无法显示,这个是的吗? ...
lijian 发表于 2011-11-17 14:45
这个一般是PHP本身有限制,一般一次不能发超过5个文件,每个文件不能超过2M左右。

可以通过修改php.ini来改动

2011-11-17 14:48:49

#32 anythink

那个你自己写自己的附件记录流程

2011-11-17 14:49:58

#33 lijian

但是可以上传到服务器啊,就是在显示的页面上位空

2011-11-17 15:26:23

#34 anythink

仔细核对吧,是json的

2011-11-17 16:18:47

#35 lijian

做一个图片操作呢?如何生成维缩图呢?

2011-11-17 20:44:34

#36 lijian

楼主,那个在index.php中配置了制动生成缩略图,是不是就可以制动生成缩略图了呢?再就是对图片修改操作改怎么做啊?本人菜鸟,跪谢

2011-11-18 09:56:05

#37 anythink

补充一个不支持 mime_content_type的 方法



if(!function_exists('mime_content_type')) {

function mime_content_type($filename) {

$mime_types = array(

'txt' => 'text/plain',
'htm' => 'text/html',
'html' => 'text/html',
'php' => 'text/html',
'css' => 'text/css',
'js' => 'application/javascript',
'json' => 'application/json',
'xml' => 'application/xml',
'swf' => 'application/x-shockwave-flash',
'flv' => 'video/x-flv',

// images
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml',

// archives
'zip' => 'application/zip',
'rar' => 'application/x-rar-compressed',
'exe' => 'application/x-msdownload',
'msi' => 'application/x-msdownload',
'cab' => 'application/vnd.ms-cab-compressed',

// audio/video
'mp3' => 'audio/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',

// adobe
'pdf' => 'application/pdf',
'psd' => 'image/vnd.adobe.photoshop',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',

// ms office
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',

// open office
'odt' => 'application/vnd.oasis.opendocument.text',
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
);

$ext = strtolower(array_pop(explode('.',$filename)));
if (array_key_exists($ext, $mime_types)) {
return $mime_types[$ext];
}
elseif (function_exists('finfo_open')) {
$finfo = finfo_open(FILEINFO_MIME);
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);
return $mimetype;
}
else {
return 'application/octet-stream';
}
}

2011-11-27 10:53:56

#38 hanyegudeng

先顶帖,后下载。呵呵

2011-12-05 16:45:48

#39 tomcen

html:
" method="POST">      
      


 
      
php:
$filename = $this->spArgs("imgfile");
...
$files = $upfile->fileupload($filename);
这样做有什么问题吗? 总是提示出错!

2012-07-14 17:18:52

#40 tomcen

html:
" method="POST">      
      


 
      
php:
$filename = $this->spArgs("imgfile");
...
$files = $upfile->fileupload($filename);
这样做有什么问题吗? 总是提示出错!
补充一点:
总是提示错误为:文件域的"..."指定错误

2012-07-14 18:14:26

#41 jake

tomcen 发表于 2012-7-14 18:14
html:
      
      
http://cn.php.net/manual/zh/features.file-upload.post-method.php

enctype="multipart/form-data"

2012-07-14 18:21:12

#42 tomcen

jake, 后面加了enctype="multipart/form-data"之后获取到的$filename=$this->spArgs('imgfile')始终为空:
" method="POST" enctype="multipart/form-data">      
      


 
      
php:
$filename = $this->spArgs('imgfile');
...
$files = $upfile->fileupload($filename);

2012-07-14 19:04:17

#43 jake

$this->spArgs 只能获取GET和POST的数据,文件要用$_FILES。

详细可以看看本帖的代码。

2012-07-14 19:10:47

#44 一米八三

谢谢!楼主楼主楼主楼主

2012-08-12 09:02:01

#45 chenshiming

非常好的东西,正在找,谢谢楼主

2013-01-09 21:19:09

#46 stalker

默认水印字体文件为font2.ttf  但是压缩包里没有提供

2013-04-17 14:12:45

#47 阿鹏

{'err':'文件域的指定错误','msg':''}为什么会这样

2014-03-11 15:13:03

#48 away410

收了,多谢分享

2014-04-10 15:28:15