设为首页 收藏本站
查看: 1028|回复: 0

[经验分享] Web图片上传插件开发文档-PHP

[复制链接]
累计签到:12 天
连续签到:1 天
发表于 2015-8-29 07:32:46 | 显示全部楼层 |阅读模式
  版权所有 2009-2014 荆门泽优软件有限公司
  保留所有权利
  官方网站:http://www.ncmem.com
  官方博客:http://www.cnblogs.com/xproer
  产品首页:http://www.ncmem.com/webplug/image-uploader/index.asp
  在线演示:标准版,专业版,
  开发文档:ASP.NET,JSP,PHP,
  升级日志:http://www.cnblogs.com/xproer/archive/2010/10/06/1844816.html
  资源下载(标准版):cab安装包(x86),cab安装包(x64),crx安装包,xpi安装包,exe安装包,开发文档,VC库,证书补丁,
  资源下载(专业版):cab安装包(x86),cab安装包(x64),crx安装包,xpi安装包,exe安装包,
  示例下载(标准版):ASP,ASP.NET,JSP,PHP,
  示例下载(专业版):ASP,ASP.NET,JSP,PHP,
  联系邮箱:1085617561@qq.com
  联系QQ:1085617561
  更新记录:
  
           更新时间
      
           说明
      
           2012-05-26
      
           增加JSP示例代码。
      
           2012-06-25
      
           增加在IIS中ASP无法上传文件章节
      
           2012-11-22
      
           增加服务端接口
      
           2013-03-13
      
           增加搭建测试环境,测试包布署说明,正式包布署说明章节。
      
           2013-05-31
      
           增加xp,win7(x86),win7(x64),chrome,firefox手动卸载章节。
      
           2014-03-17
      
           更新测试包和正式包布署说明。
      
    
  ​
  1.1. PHP
   DSC0000.jpg
  1. 测试包布署说明
    主要步骤如下:
  1.将ImageUploader.cab上传到测试服务器中。
  2.修改测试服务器中的ImageUploader.js配置信息。
DSC0001.jpg
  2. 正式包布署说明
    主要步骤如下:
  1.将ImageUploader.cab上传到项目服务器中。
  2.修改项目服务器中的ImageUploader.js配置信息。
DSC0002.jpg
  1. 升级控件
    一般情况下,控件升级后ImageUploader.cab会更新,同时版本号也会更新。再次打开IE浏览器时,会出现类似如下提示:
DSC0003.jpg
DSC0004.jpg
  主要步骤如下:
  1. 重新上传ImageUploader.cab文件。
  2. 更新ImageUploader.js中的版本号。
  1.1. 更新ImageUploader.js中的版本号
    打开ImageUploader.js文件,查找以下代码,将version=后面的版本号改为最新的版本号。
       this.Config = {
           "EncodeType"       : "GB2312"
           , "Licensed"       : "武汉命运科技有限公司"
           , "ThumbWidth"     : 0//缩略图宽度,必须同时设置缩略图高度
           , "ThumbHeight"    : 0//缩略图高度,必须同时设置缩略图宽度
           , "ImageUploadType": ""//图片上专格式:JPG,PNG,GIF,BMP,留空则按实际图片格式上传。
           , "JpegQuality"    : 100//JPG图片质量。0~100。此数值越小,图片大小越小
           , "FileSizeLimit"  : 0//文件大小限制,以字节为单位。0表示不限制。
           , "Watermark"      : false//是否启用水印
           , "ClsidUploader"  : "2025D1D7-921B-49bd-8073-7C64ABFDFFD4"
           ,"ProjID"          : "Xproer.ImageUploader"
           , "AppPath"        : "/"    //根目录:"/",子目录:"/web/"
           , "CabPath"        : "http://www.ncmem.com/products/image-uploader/demo/ImageUploader.cab#version=2,7,56,64575"
           , "PostUrl"        : "http://localhost:1595/asp.net/upload.aspx"
       };
  说明:
  更新版本号后,IE会自动提示用户安装最新的控件。
  1.      ImageUploader用户接口
  1.1.   设置服务器编码
  
var ImageUploader = new ImageUploader ("acxImageUploader");//控件object对象的ID

ImageUploader.Config["EncodeType"] = "GB2312";//上传页面的编码格式为GB2312


  1.2.   图片上传地址
  
var ImageUploader = new ImageUploader ("acxImageUploader");//控件object对象的ID

ImageUploader.Config["PostUrl"] = "http://www.ncmem.com/upload.aspx";//设置图片上传地址。


  1.3.   缩略图
  1.3.1.    配置控件自动生成缩略图
  
var ImageUploader = new ImageUploader ("acxImageUploader");//控件object对象的ID

ImageUploader.Config["ThumbWidth"] = 100;//将缩略图宽度设为100

ImageUploader.Config["ThumbHeight"] = 100;//将缩短略图高度设为100

  1.4.   图片格式转换
  
var ImageUploader = new ImageUploader ("acxImageUploader");//控件object对象的ID

ImageUploader.Config["ImageUploadType"] = "JPG";//将图片类型设为JPG,在上传前所有图片格式将会被转换为JPG格式。


  1.5.   设置附加信息
  
var ImageUploader = new ImageUploader ("acxImageUploader");

ImageUploader.Fields["UserName"] = "test";

ImageUploader.Fields["UserID"] = "100";
ImageUploader.Init();

  1.6.   设置默认打开的文件夹
  
var ImageUploader = new ImageUploader ("acxImageUploader");

ImageUploader.SetDefaultFolder("E:\\图像资源\\aaa");

ImageUploader.Init();

  1.7.   获取上传完的图片地址
  
上传控件提供了一个AfterImagesPosted事件,开发人员只需要为此事件指定一个函数指针,这样开发人员就能够自定义处理图片上传完成后的逻辑。

注意:

     在IE6和IE7浏览器中,当控件将所有图片上传完毕后请不要立即进行跳转的操作,立即跳转操作可能导致浏览器被锁住。这个问题是由于IE6浏览器没有处理控件回调通知消息导致的。

     如果需要在所有图片上传完毕后进行跳转链接操作,请使用定时器实现。一般将时间设为1秒钟

//所有图片传输完毕

function AfterImagesPosted(obj)

{

     var imgs = obj.Com.GetPostedFiles();

     if (imgs == null) return;

     var strImgs = new Array();


     for (var index = imgs.lbound(1); index <= imgs.ubound(1); index++)

     {

         strImgs.push(imgs.getItem(index));

     }


     //在IE6或IE7中如果希望在所有图片上传完后进行跳转链接操作,应该使用定时器来实现。

     setTimeout(&quot;http://www.ncmem.com/&quot;,1000);

}

//跳转链接

function GoToUrl(url)
{
     window.location.href = url;

}

        
  1.1.   PHP
  此文件主要用来接收控件上传的图片文件,保存到服务器中,并将图片地址返回给控件。

  
   
upload.php

   
<?php

$uploadDir = dirname(__FILE__).'/uploade';


if(!file_exists($uploadDir)){

     mkdir($uploadDir);

}

//接收控件上传的文件,这里使用$_FILES[0]的方式取文件,不能使用$_FILES['img']的方式获取

$uploadfile = $uploadDir.&quot;/&quot;.substr(md5($_FILES[0]['tmp_name']),3).&quot;.jpg&quot;;

//echo $uploadfile;

if (!move_uploaded_file($_FILES[0]['tmp_name'],$uploadfile)){

     exit('upload error!');

}


//2010-1-16_1226481253.jpg

//注意:这里的时间应该包含毫秒。因为控件可能在一秒钟内同时上传多张图片,

//如果没有加上毫秒,那么同时上传的两张图片名称就会相同。

echo '/upload/test.gif';


//必须要输出Content-Length值,注意Content-Length冒号后面有一个空格

header('Content-Length: 'ob_get_length());

?>


  2.      JavaScript对象
  2.1.   ImageUploader对象
  类型:JavaScript
图片上传插件的封装类。提供图片上传插件的信息配置及初始化功能。

  方法
  Init方法
  初始化图片上传插件。

语法
void Init();

  属性
  Fields属性
  上传时附加的额外信息。

注意:此属性暂时不支持中文字符串。

以下示例演示上传时添加用户名和密码的额外信息:
var ImageUploader = new ImageUploader (&quot;acxImageUploader&quot;);

ImageUploader.Fields[&quot;UserName&quot;] = &quot;test&quot;;

ImageUploader.Fields[&quot;UserPass&quot;] = &quot;test&quot;;

  Config属性
  提供全局配置信息。

语法:
this.Config = {

         &quot;EncodeType&quot; : &quot;UTF-8&quot;

         ,&quot;PostUrl&quot;    : &quot;http://www.ncmem.com/upload.aspx&quot;

         ,&quot;ImageUploadType&quot; : &quot;JPG&quot;  //图片上传格式。JPG,PNG,GIF,BMP

         , JpegQuality : 80 //JPG图片格式质量

         , &quot;ThumbWidth&quot;: &quot;0&quot;//缩略图宽度。如果为0表示使用图片的实际大小

         , &quot;ThumbHeight&quot;: &quot;0&quot;//缩略图高度。如果为0表示使用图片的实际大小

     };


  3.      ActiveX对象
  3.1.   XproerWebPlug.ImageUploader对象
  CLSIDFB86816A-F47E-4E87-9600-20D5BD57886E
类型:ActiveX
图片上传插件。

  属性
  
JpegQuality

JPG图片质量。1-100

ImageUploadType

上传到服务器的图片格式。留空则表示按本地图片文件格式上传。

目前只支持下列格式:jpg,png,gif,bmp。

如果设置此格式,本地所有图片在上传时将会被自动转换为指定的格式。

PostUrl

图片上传地址。

EncodeType

     服务器编码类型。

目前只支持下列编码:UTF-8,GB2312


  4.      应用示例
  以下示例将会弹出一个对话框并将用户选定的文件上传到服务器中。
  
   JavaScript:
   
<!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;>

<html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;>

<head>

     <title>ImageUploader-Demo</title>

     <script language=&quot;javascript&quot; type=&quot;text/javascript&quot; src=&quot;ImageUploader.js&quot;></script>

     <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>

         var imgUploader = null;


         window.onload = function()

         {

              imgUploader = new ImageUploader(&quot;AcxUploader&quot;);

              imgUploader.Config[&quot;EncodeType&quot;] = &quot;GB2312&quot;;

              imgUploader.Config[&quot;PostUrl&quot;] = &quot;http://localhost:1595/upload.aspx&quot;;

              imgUploader.Config[&quot;ImageUploadType&quot;] = &quot;jpg&quot;;//以JPG格式上传

              imgUploader.Config.JpegQuality = 80;//JPG格式质量为80。范围是1-100,值越高质量越高。

              imgUploader.Init();

         }

     </script>

</head>

<body>

     <object id=&quot;AcxUploader&quot;

         classid=&quot;clsid:FB86816A-F47E-4E87-9600-20D5BD57886E&quot;

         codebase=&quot;http://www.ncmem.com/products/image-uploader/demo/ImageUploader.cab#version=1,0,5,44690&quot;

         width=&quot;677&quot; height=&quot;500&quot;>

     </object>

</body>

</html>


  1. 相关问题
  1.1. 在Windows 2003上无法安装控件
    这个是因为Windows 2003系统缺少VC运行库导致的,请下载VC运行库进行安装。安装时请关闭所有打开的上传IE页面,在安装完成后再重新打开上传页面。
  VC运行库下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf%20
  1.3. 手动卸载控件-Windows XP
    主要步骤如下:
  1.关闭所有IE
  2.打开cmd
DSC0005.jpg
  3.进入C:\Windows\System32
DSC0006.jpg
  4.输入命令regsvr32 -u ImageUploader.dll
DSC0007.jpg
  5.删除ImageUploader.dll文件。
DSC0008.jpg
  1.4. 手动卸载控件-Windows 7(x86)
    主要步骤如下:
  1.关闭所有IE浏览器。
  2.以管理员权限打开CMD
DSC0009.jpg
  3.进入C:\Windows\System32文件夹
DSC00010.jpg
  4.使用以下命令卸载控件
  regsvr32 -u ImageUploader.dll
DSC00011.jpg
  5.删除ImageUploader.dll文件。
  1.5. 手动卸载控件-Windows 7(x64)
    主要步骤如下:
  1.关闭所有IE浏览器。
  2.以管理员权限打开CMD
DSC00012.jpg
  3.进入C:\Windows\SysWOW64文件夹
DSC00013.jpg
  4.使用以下命令卸载控件
  regsvr32 -u ImageUploader.dll
DSC00014.jpg
  5.删除ImageUploader.dll文件。
DSC00015.jpg
  1.6. 卸载控件-Chrome
    1.打开扩展程序
DSC00016.jpg
  2.删除插件
DSC00017.jpg
  1.7. 卸载控件-Firefox
    1.打开附加组件
DSC00018.jpg
  2.删除组件
DSC00019.jpg
  1.8. 用户无法注册控件
    问题分析:此问题是由于用户系统缺少VC库导致的,
  解决方法:
  请先下载VC库并安装。
  下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf%20
  1.9. 浏览器一直提供安装控件
    问题分析:此问题是由于HttpUploader.js中的版本号不正确导致的。
  解决方法:
  1. 检查HttpUploader.js中所有控件的版本号是否正确。
  2. 清除IE浏览器缓存,重新打开页面。
  1.10. 加截控件错误
    截图如下:
DSC00020.jpg
  问题分析:
  示例中控件的加截方式是通过下面的方式加截的:
  document.write(object code);
  这种方式在复杂的HTML中(比如ExtJS框架,复杂Iframe嵌套)可能会导致IE无法正常加截控件。
  解决方法:
  直接将控件的加截代码写到HTML中,让IE静态加截。示例代码如下:
  <!--加截断点续传控件开始->
       <div style=&quot;display:none;&quot;>
           <!--HttpUploader-->
           <object id=&quot;objHttpUpLoader&quot; classid=&quot;clsid:B594944A-9ECC-4190-9175-B706AF6BA0BF&quot;
            codebase=&quot;http://www.ncmem.com/products/http-uploader3/demo/HttpUploader.cab#version=2,5,28,54987&quot; width=&quot;1&quot; height=&quot;1&quot; ></object>
            <!--HttpPartition-->
           <object id=&quot;objHttpUploaderPartition&quot; classid=&quot;clsid:0F947392-1D3D-40b3-B19C-99DB17F4A4A6&quot;
            codebase=&quot;http://www.ncmem.com/products/http-uploader3/demo/HttpUploader.cab#version=2,5,28,54987&quot; width=&quot;1&quot; height=&quot;1&quot; ></object>
       </div>
  <!--加截断点续传控件结束->
  注意:
  以静态方式加截控件需要保证classid和codebase必须正确。否则IE无法加截控件。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105675-1-1.html 上篇帖子: Zend Framework的PHP编码规范【1】 下篇帖子: php 生成二维码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表