荆门泽优软件有限公司博客

Web大文件上传控件-PHP开发文档-HttpUploader6.2

版权所有 2009-2017荆门泽优软件有限公司

保留所有权利

官方网站:http://www.ncmem.com/

产品首页:http://www.ncmem.com/webapp/up6.2/index.asp

在线演示:http://www.ncmem.com/products/up6.3/index.htm

产品介绍:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html

升级日志:http://www.cnblogs.com/xproer/archive/2012/10/26/2741268.html

开发文档-ASPhttp://www.cnblogs.com/xproer/archive/2012/02/17/2355458.html

开发文档-PHPhttp://www.cnblogs.com/xproer/archive/2012/02/17/2355467.html

开发文档-JSPhttp://www.cnblogs.com/xproer/archive/2012/02/17/2355462.html

开发文档-ASP.NEThttp://www.cnblogs.com/xproer/archive/2012/02/17/2355469.html

资源下载:cab安装包(x86),cab安装包(x64),crx安装包,xpi安装包,exe安装包,开发文档,VC运行库,Discuz!X2插件下载,

示例下载(.NET)SQL2005示例,

示例下载(JSP)Sql2005示例,MySQL示例,Oracle示例,

示例下载(PHP)MySQL示例

联系信箱:1085617561@qq.com

联系QQ1085617561

 

1.  在本地测试DEMO

 

1.1. PHP

注意:php32只支持1G文件上传,因为php32不支持int64类型。

1.修改php.ini配置,将文件大小改为6MB。因为在上传控件中小文件和大文件是由不同的逻辑来实现。小于5MB的文件会直接上传,大于5MB的文件会被分块,默认分块是1MB.

修改完php.ini后需要重启php server

01240734-a653-4c6a-9992-103f837ef218

2.创建数据表,数据表脚本在up6_files.sql,up6_folders.sql

3895c824-3c93-46f6-88fd-81c1640e3d72

 

3.修改数据库配置信息

3636f971-dcbc-4b65-9569-75e980270ec3

 

4.修改上传地址。

acbb3f25-decc-4a2c-93ae-8be840a046b1

 

2.  测试包布署说明

说明:如果测试服务器在内网,且测试者不能访问互联网,则需要将插件包布署到测试服务器。

如果测试者可访问互联网,则不需要将插件包布署到测试服务器。

1.修改up6.js文件中的配置信息。

path地址改为测试服务器地址。

088d85ae-95ed-488f-b8a5-0cfdd670e1a7

 

Firefox,Chrome,cab(x64)安装包布署方法:

1.从官网下载控件安装包

2.将控件安装包布署到测试服务器中

3.JS中控件包地址改为测试服务器地址。

c44e865e-d80a-4d0f-bde4-a0aea9aa1d63

 

3.  正式包布署说明

说明:正式包是在购买产品后我们会单独制做。

1.up6.cab,up64.cab,up6.crx,up6.nat.crx,up6.xpi,up6.exe上传到项目服务器中。

     up6.cabIE(x86)浏览器插件安装包。

     up64.cabIE(x64)浏览器插件安装包。

     up6.crxChrome浏览器插件安装包。

     up6.nat.crxChrome 45+浏览器插件安装包。

     up6.xpiFirefox浏览器插件安装包。

     up6.exe为控件集成安装包。

2.修改up6.js文件中的配置信息。

将版本号改为最新。

ccd868f9-c097-4380-977f-085e281385f0

 

Firefox,Chrome,cab(x64)布署说明:

1.修改控件包地址

c44e865e-d80a-4d0f-bde4-a0aea9aa1d63

 

2.修改控件信息

03f00bfb-cc5a-4ef8-ac17-4499b4451e55

 

4.  流程说明

 

4.1. 单文件上传流程

d648ddbe-46bc-4260-b4f0-16a88ee2ebc1

 

4.2. 文件续传流程

eb0e76d7-b5a1-4de6-815a-a88065bb978b

数据说明:

fid:文件ID

md5:文件MD5

postLen:已上传长度,控件通过此属性定位续传位置。

pathSvr:文件在服务器中的存储路径。f_post.jsp通过此属性保存文件块数据。

 

4.3. 文件夹上传流程

deab9a74-fada-482c-b513-02ef4165e33f

5,6会循环访问,直到所有文件上传完后再走7的流程。

 

5.  项目说明

35f363ad-b604-47b4-8028-d7bd89866ba5

up6.file.js,文件上传对象实现文件,负责文件的上传和续传

up6.folder.js,文件夹上传对象的实现文件,负责文件夹的上传和续传。

up6.js,文件上传管理器。

up6-single.js,单文件上传实现逻辑。

index.htm,多文件上传演示页面。

index-single.htm,单文件上传演示页面。

f_process.sql,文件进度更新存储过程

fd_fileProcess.sql文件夹-子文件进度更新存储过程

up6_files.sql,文件表

up6_folders.sql,文件夹表

 

6.  整合到现有系统中

 

6.1. php

 

6.1.1. 复制文件

88d4b847-6afa-4c67-9147-7329ba98facb

 

6.1.2. 修改配置

1.修改DbHelper.php中的配置

修改数据库配置

2.修改up6.js中的配置

修改服务地址

修改控件包地址

 

6.2. 在页面中引用

1.添加头文件

2.添加引用代码

 

<head></head>标签中间添加下列代码

    <link href="js/up6.css" type="text/css" rel="Stylesheet"/>

    <script type="text/javascript" src="js/jquery-1.4.min.js"></script>

    <script type="text/javascript" src="js/json2.min.js" charset="utf-8"></script>

    <script type="text/javascript" src="js/up6.config.js" charset="utf-8"></script>

    <script type="text/javascript" src="js/up6.file.js" charset="utf-8"></script>

    <script type="text/javascript" src="js/up6.folder.js" charset="utf-8"></script>

    <script type="text/javascript" src="js/up6.js" charset="utf-8"></script>

    <script language="javascript" type="text/javascript">

        var cbMgr = new HttpUploaderMgr();

 

       $(document).ready(function()

       {

            cbMgr.load_to("FilePanel");

       });

 </script>

 

<body></body>标签中间的适当位置添加下列代码:

<div id="FilePanel"></div>

 

 

 

7.  控件升级

一般情况下控件升级后只需要更新服务器的up6.cab文件和修改up6.js中的控件版本号。用户打开浏览器时IE会自动提示用户安装最新的控件。效果图如下:

40523cec-7dd2-40c8-b49a-015e9027b6c9

主要步骤如下:

1.重新上传up6.cab文件

2.修改up6.js中的控件版本号。

 

7.1. 重新上传up6.cab文件

在控件升级后,我们会将最新的up6.cab文件发给开发人员。开发人员只需要将最新的up6.cab文件上传到服务器即可。

 

7.2. 修改up6.js中的控件版本号

一般情况下,控件更新后版本号也会更新。在重新上传up6.cab后,需要修改控件的版本号。

请找到类似以下代码后,修改version后面的版本号。

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"             : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:4959/demoSql2005/db/fd_create.aspx"

         , "UrlFdComplete"       : "http://localhost:4959/demoSql2005/db/fd_complete.aspx"

         , "UrlFdDel"           : "http://localhost:4959/demoSql2005/db/fd_del.aspx"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:4959/demoSql2005/db/f_create.aspx"

         , "UrlPost"            : "http://localhost:4959/demoSql2005/db/f_post.aspx"

         , "UrlComplete"        : "http://localhost:4959/demoSql2005/db/f_complete.aspx"

         , "UrlList"            : "http://localhost:4959/demoSql2005/db/f_list.aspx"

         , "UrlDel"             : "http://localhost:4959/demoSql2005/db/f_del.aspx"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

8.  教程

 

 

8.1. 在多个产品中配置

 

8.2. 上传文件夹

 

9.  上传事件

 

9.1. 文件上传完毕

说明:单文件和文件夹的子文件都会触发此事件

    <script language="javascript" type="text/javascript">

        var cbMgr = new HttpUploaderMgr();

        cbMgr.event.fileComplete = function (obj/*FileUploader*/) { /*alert(obj.pathSvr);*/ };

    </script>

 

9.2. 文件夹上传完毕

说明:单文件和文件夹的子文件都会触发此事件

    <script language="javascript" type="text/javascript">

        var cbMgr = new HttpUploaderMgr();

        cbMgr.event.fdComplete = function (obj/*FolderUploader*/) { /*alert(obj.pathSvr);*/ };

    </script>

 

9.3. 文件md5计算完毕

说明:单文件和文件夹的子文件都会触发此事件

    <script language="javascript" type="text/javascript">

        var cbMgr = new HttpUploaderMgr();

        cbMgr.event.md5Complete = function (obj) { /*alert(obj.pathSvr);*/ };

    </script>

 

9.4. 所有文件全部上传完毕

说明:单文件和文件夹的子文件都会触发此事件

    <script language="javascript" type="text/javascript">

        var cbMgr = new HttpUploaderMgr();

        cbMgr.event.queueComplete = function () { /**/ };

    </script>

 

 

10. 用户接口

 

10.1. 控件提交的文件字段

"Content-Disposition: form-data; name="FileName"; filename="

 

10.2. 配置上传地址

文件上传地址一般都在up6.js文件中配置

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"             : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:4959/demoSql2005/db/fd_create.aspx"

         , "UrlFdComplete"       : "http://localhost:4959/demoSql2005/db/fd_complete.aspx"

         , "UrlFdDel"           : "http://localhost:4959/demoSql2005/db/fd_del.aspx"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:4959/demoSql2005/db/f_create.aspx"

         , "UrlPost"            : "http://localhost:4959/demoSql2005/db/f_post.aspx"

         , "UrlComplete"        : "http://localhost:4959/demoSql2005/db/f_complete.aspx"

         , "UrlList"            : "http://localhost:4959/demoSql2005/db/f_list.aspx"

         , "UrlDel"             : "http://localhost:4959/demoSql2005/db/f_del.aspx"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

10.3. 设置服务器编码方式

服务器编码设置一般都在up6.js文件中配置

说明:控件向服务器发送的数据会根据此设置来进行编码。此设置必须与服务器编码保持一致。

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"             : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:4959/demoSql2005/db/fd_create.aspx"

         , "UrlFdComplete"       : "http://localhost:4959/demoSql2005/db/fd_complete.aspx"

         , "UrlFdDel"           : "http://localhost:4959/demoSql2005/db/fd_del.aspx"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:4959/demoSql2005/db/f_create.aspx"

         , "UrlPost"            : "http://localhost:4959/demoSql2005/db/f_post.aspx"

         , "UrlComplete"        : "http://localhost:4959/demoSql2005/db/f_complete.aspx"

         , "UrlList"            : "http://localhost:4959/demoSql2005/db/f_list.aspx"

         , "UrlDel"             : "http://localhost:4959/demoSql2005/db/f_del.aspx"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

10.4. 设置允许上传的文件类型

文件上传类型一般都在up6.js文件中配置

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"             : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:4959/demoSql2005/db/fd_create.aspx"

         , "UrlFdComplete"       : "http://localhost:4959/demoSql2005/db/fd_complete.aspx"

         , "UrlFdDel"           : "http://localhost:4959/demoSql2005/db/fd_del.aspx"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:4959/demoSql2005/db/f_create.aspx"

         , "UrlPost"            : "http://localhost:4959/demoSql2005/db/f_post.aspx"

         , "UrlComplete"        : "http://localhost:4959/demoSql2005/db/f_complete.aspx"

         , "UrlList"            : "http://localhost:4959/demoSql2005/db/f_list.aspx"

         , "UrlDel"             : "http://localhost:4959/demoSql2005/db/f_del.aspx"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

假设我们设置允许上传的文件类型为jpg,bmp,png,gif,则效果图如下:

61a4dce2-6f98-4258-959a-10a1521ce8aa

 

10.5. 设置允许上传的文件大小

在线字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

允许上传的文件大小一般都在up6.js文件中配置

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"             : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:4959/demoSql2005/db/fd_create.aspx"

         , "UrlFdComplete"       : "http://localhost:4959/demoSql2005/db/fd_complete.aspx"

         , "UrlFdDel"           : "http://localhost:4959/demoSql2005/db/fd_del.aspx"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:4959/demoSql2005/db/f_create.aspx"

         , "UrlPost"            : "http://localhost:4959/demoSql2005/db/f_post.aspx"

         , "UrlComplete"        : "http://localhost:4959/demoSql2005/db/f_complete.aspx"

         , "UrlList"            : "http://localhost:4959/demoSql2005/db/f_list.aspx"

         , "UrlDel"             : "http://localhost:4959/demoSql2005/db/f_del.aspx"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

10.6. 设置文件块大小

在线字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

文件块大小一般都在up6.js文件中配置。

一般情况下推荐设置为1MB,这是为了保证在网络环境不稳定的情况下,控件能够正常上传。如果用户的网络环境比较稳定,可适当调大这个值。

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"          : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"              : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:4959/demoSql2005/db/fd_create.aspx"

         , "UrlFdComplete"       : "http://localhost:4959/demoSql2005/db/fd_complete.aspx"

         , "UrlFdDel"           : "http://localhost:4959/demoSql2005/db/fd_del.aspx"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:4959/demoSql2005/db/f_create.aspx"

         , "UrlPost"            : "http://localhost:4959/demoSql2005/db/f_post.aspx"

         , "UrlComplete"        : "http://localhost:4959/demoSql2005/db/f_complete.aspx"

         , "UrlList"            : "http://localhost:4959/demoSql2005/db/f_list.aspx"

         , "UrlDel"             : "http://localhost:4959/demoSql2005/db/f_del.aspx"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

10.7. 设置附加信息

自定义附加字段在up6.js中定义,也可以不用定义:

16744a01-c3e0-4a72-aab9-a26ce46b8616

注意:

1.附加字段必须是字符串类型。

2.如果附加字段的值包含中文,在上传前必须使用encodeURIComponent进行编码。

 

 

在引用页面通过Fields属性来添加自定义字段:

965891c2-9a24-418d-96a0-28150b065c8d

 

使用AJAX向服务器提交附加字段:

8c418367-32c9-4ed8-b818-1f439f3a189d

 

f_create.jsp中接收附加字段:

b49339ae-15b7-4376-93d2-4492bef2ba44

 

 

附加信息的作用就是在上传图片的同时向服务器提交额外的字段信息。比如当用户向服务器上传截图时,服务器需要知道是哪位用户上传的截图,这时可以将用户ID添加到附加信息中,这样服务器在获取截图信息的同时也能够根据附加信息知道是哪位用户上传的截图。

客户端:

cbMgr.Config.Fields["UserName"] = "test";

服务端:

string fname = Request.QueryString["UserName"];

 

开发人员可以根据自已的业务需求来扩展附加信息:

客户端:

cbMgr.Config.Fields["f1"] = "f1";

cbMgr.Config.Fields["f2"] = "f2";

cbMgr.Config.Fields["f3"] = "f3";

cbMgr.Config.Fields["f4"] = "f4";

cbMgr.Config.Fields["f5"] = "f5";

服务端(ASP.NET)

string f1 = Request.QueryString["f1"];

string f2 = Request.QueryString["f2"];

string f3 = Request.QueryString["f3"];

string f4 = Request.QueryString["f4"];

string f5 = Request.QueryString["f5"];

 

10.8. 上传本地文件

主要步骤如下:

1.调用addFileLoc函数添加本地文件,注意路径需要使用双斜框(\\)

2.调用PostFirst函数开始上传文件。

    <script language="javascript" type="text/javascript">

    var cbMgr = new HttpUploaderMgr();

 

    $(document).ready(function()

    {

         cbMgr.load_to("FilePanel");

     });

 

     //上传本地文件

     function postFileLoc()

     {

         cbMgr.addFileLoc("D:\\soft\\QQ2013.exe");

         cbMgr.PostFirst();

     }

    </script>

 

10.9. 从剪帖板中获取文件列表

为了使上传文件的操作更加方便,我们在Xproer.HttpPartition4中增加了一个接口GetClipboardFiles()。通过这个接口用户能够非常方便的在资源管理器中复制文件,然后在上传页面中粘贴上传。

以下代码演示粘贴文件的功能

    <script language="javascript" type="text/javascript">

        var cbMgr = new HttpUploaderMgr();

 

    $(document).ready(function()

    {

         cbMgr.load_to("FilePanel");

    });

 

    function paste_files()

    {

        cbMgr.paste_files();

    }

 

10.10. 自定义服务器文件名称

示例中服务器文件名称默认是使用文件md5+扩展名的形式命名。如果需要自定义服务器文件名称则可以修改下面的代码:

dfbe790c-12f9-4836-952c-7728403fa42f

 

ASP.NET:

be60417b-f194-4e72-9ae1-7c061969a8bc

 

 

10.11. 文件保存位置

up6.1中有两种保存模式,一种是md5一种是uuid

md5PathMd5Builder生成存储路径。md5主要提供给文件使用,可在服务器端保存唯一的文件,有效避免重复文件。

uuidPathUuidBuilder生成存储路径。uuid主要提供给文件夹使用,可以与本地文件夹结构完全保持一致。使用uuid模式上传文件夹时秒传功能会失效。

asp.net代码截图:

44a21c77-1025-404b-858b-c849edd465f3

 

java代码截图:

31065220-a7b4-46b1-8e81-a8da011849ef

 

php代码截图:

b8e3f776-847c-4842-9367-3c0ca01cf76e

 

10.12. 事件

md5Complete

md5计算完毕时调用

2b8f5a01-13ea-4e56-b674-6bbba0a3a7b5

示例:

2c429875-b158-430a-8b2f-128a4ec27cdb

 

fileComplete

文件上传完毕时调用

12225b3a-c9e9-44ba-ba8a-9e688a6a6779

示例:

3229740f-87ec-4bcc-a993-c602f304bede

 

fdComplete

文件夹上传完毕时调用

b7c28cd0-6048-4209-986a-e6d8ae052015

 

queueComplete

队列上传完毕时调用

4674ce41-dce9-4a85-8870-ce43758c0eef

 

11. 业务逻辑

11.1. 服务端

 

11.1.1. php

自定义文件保存路径

文件保存位置主要由PathMd5Builder.java, PathMd5Builder.cs, PathMd5Builder.php控制。

路径格式:项目路径\upload\2013\04\15\md5.rar

php代码截图:

398d9a5c-fcba-4588-b7d7-54672e46005d

 

11.2. 客户端

 

11.3. 管理器-HttpUploaderMgr

负责文件夹和文件的上传管理功能。

c3bd4ebf-20b0-4eac-8061-a3c1768f4297

 

11.3.1. 文件上传完毕事件

12225b3a-c9e9-44ba-ba8a-9e688a6a6779

fileComplete为文件上传完毕事件,每一个文件上传完毕都会触发此事件。

 

11.3.2. 所有文件上传完毕事件

4674ce41-dce9-4a85-8870-ce43758c0eef

queueComplete为队列上传完毕事件,当所有文件和文件夹上传完毕后会触发此事件。

可以通过arrFilesComplete属性获取所有已经上传完毕的文件和文件夹

9a824dc1-0187-48aa-afa2-5ad105edd417

 

触发位置:

25842ce3-8e22-44f4-bb0b-ff7005fd167b

 

11.3.3. 选择文件

896169e6-8ceb-4edf-b068-e166d855bea3

 

11.3.4. 选择文件夹

b257057b-759d-4148-8b8a-f148dd844866

 

11.4. 已上传完列表

 

78745ba2-3ddf-4450-a7b3-70fd56e73896

11.4.1. 加载数据

7a1ed475-8860-4ee1-aafe-6e392fa96b47

509b21a4-b9ad-4b27-a998-e3a189be64ac

 

c3f3e59d-e6b0-4929-9dad-002e4c1cb1fc

 

11.5. 文件

11.5.1. html模板

86c30c76-7438-419e-b1c9-86c6a7dc3ec6

 

11.5.2. 文件上传对象

function FileUploader(fileLoc, mgr)

f6cc3ce8-4e56-4423-8df1-39dcbaa5921d

 

 

11.5.3. 文件进度信息

post_process

3bad1096-c301-4981-85ca-7c8524409cfe

 

11.5.4. 文件续传

 

this.ResumeFile = function(fileSvr)

9b4de588-a7dc-43be-b7e9-c19ea63db7c4

 

在文件列表中续传

9fe4ef1f-70c2-459b-97ac-5c848771c1cb

 

11.5.5. 添加到文件列表

d9b37ecc-b6a3-4679-8889-4bdfe4cffddc

 

12e02dcb-0f0b-43a3-bcf8-3da60755e213

 

28692e3a-f7c3-44b8-b4ca-eb4f1ef429c4

 

11.6. 文件夹

openFolder

 

openFolders: function ()

 

function FolderUploader(idLoc,jsonStr,mgr)

 

md5计算完毕

this.md5_complete = function (json)

 

11.6.1. 文件夹对象

文件夹上传对象内部保存一个文件列表(HttpUploader),文件夹上传时,将依次上传这个文件列表。

 

function FolderUploader(idLoc,fdLoc,mgr)

94b9804d-3f43-4800-8c48-e7f47c7e7ed8

参数:

idLoc:任务ID,唯一标识。

fdLoc:文件夹JSON字符串。

mgr:文件上传管理对象。

 

11.6.2. 初始化

up6.folder.js

30f5484b-a762-4a29-9d63-6bda2497a3bc

fd_create

 

 

11.6.3. 续传

 

取数据

uc_builder,uc_file_child,uc_folder自动生成文件夹续传数据,并合并到files

2d443939-3232-49a9-9262-0ea157cbe226

 

加载文件列表

f_list

up6.js

     FileListMgr.LoadData

749594d6-ddcb-413a-a409-0cacf707c222

ResumeFolder

11a50e87-52e5-4579-a301-e507a451a622

11264425-e8ea-451b-97a5-b9fcca217f78

 

 

11.6.4. 更新文件存储路径

f_create.aspx.cs

4ab374ba-92bd-4495-8e01-ad41d6d36741

f_create.jsp

733c0184-020d-4b21-9dda-91ad15c3ea5b

f_create.php

f272c7a9-08e5-46f9-a49f-7373cd8b0497

 

 

11.6.5. 文件命名规则

 

php

3503bdc4-7329-43b5-b8ec-33eba186af97

 

11.6.6. 文件夹JSON格式

通过控件获取文件夹JSON信息:

     [

          [name:"soft"

          ,pid:0                //父级ID

          ,idLoc:0              //文件夹IDJS自定义

          ,idSvr:0              //文件夹ID,与数据库中的xdb_folder.fd_id对应。

          ,length:"102032"      //数字化的文件夹大小,以字节为单位

          ,size:"10G"           //格式化的文件夹大小

          ,pathLoc:"d:\\soft"   //文件夹在客户端的路径

          ,pathSvr:"e:\\web"    //文件夹在服务端的路径

          ,foldersCount:0       //子文件夹总数

          ,filesCount:0         //子文件总数

          ,filesComplete:0      //已上传完成的子文件总数

          ,folders:[

                {name:"img1",pidLoc:0,pidSvr:10,idLoc:1,idSvr:0,pathLoc:"D:\\Soft\\img1",pathSvr:"E:\\Web"}

               ,{name:"img2",pidLoc:1,pidSvr:10,idLoc:2,idSvr:0,pathLoc:"D:\\Soft\\image2",pathSvr:"E:\\Web"}

               ,{name:"img3",pidLoc:2,pidSvr:10,idLoc:3,idSvr:0,pathLoc:"D:\\Soft\\image2\\img3",pathSvr:"E:\\Web"}

               ]

          ,files:[

                {name:"f1.exe",idLoc:0,idSvr:0,pidRoot:0,pidLoc:1,pidSvr:0,length:"100",size:"100KB",pathLoc:"",pathSvr:""}

               ,{name:"f2.exe",idLoc:0,idSvr:0,pidRoot:0,pidLoc:1,pidSvr:0,length:"100",size:"100KB",pathLoc:"",pathSvr:""}

               ,{name:"f3.exe",idLoc:0,idSvr:0,pidRoot:0,pidLoc:1,pidSvr:0,length:"100",size:"100KB",pathLoc:"",pathSvr:""}

               ,{name:"f4.rar",idLoc:0,idSvr:0,pidRoot:0,pidLoc:1,pidSvr:0,length:"100",size:"100KB",pathLoc:"",pathSvr:""}

               ]

     ]

 

 

11.6.7. 区分文件夹和文件上传任务

FolderUploaderFileUploader都有一个isFolder属性。

FolderUploader.isFolder属性为true,FileUploader.isFolder属性为false

 

11.6.8. 获取文件夹JSON数据

 

JavaScript:

a2af8c28-8dde-4046-8f64-416042f93d59

 

11.6.9. 上传文件夹

逻辑:

1.将文件夹JSON保存到数据表。

2.更新JSON中的idSvr信息。

3.向数据表添加文件信息?

上传文件时,将会又添加一次信息。重复了。

新逻辑:

     向文件数据表添加文件数据,这样续传文件夹时,就可以读取文件信息

         这时没有创建文件,文件信息中没有MD5信息。

     创建文件时,增加附加字段idSvr,服务端通过这个字段判断是否更新数据表信息,并创建文件。

3.返回更新后的JSON

 

添加文件夹

6c9450fd-0285-44cf-a46d-6f4466c53ef1

 

101edced-eb51-4e53-a7ca-e9ca6595be2d

 

11.6.10. 停止上传

this.stop = function ()

f6285bad-2393-4200-b1d5-1af5455f04c6

 

 

11.6.11. 上传文件夹中的文件

e15664c5-999f-4f6e-8803-f52823639b1e

 

 

11.6.12. 服务器创建文件夹JSON信息

fd_create.aspx

     解析文件夹

         创建文件夹

         设置子文件的pid

     解析文件

         向数据库添加文件信息,设置文件pid,pidRoot信息。

         更新文件的pidSvr(父级目录ID),pidRoot(根级目录ID),idSvr(数据库ID)

              f_create.aspx根据idSvr更新文件数据表信息,并创建文件。

 

11.6.13. 存储位置

文件夹存储分两种模式一种是md5模式,一种是uuid模式。md5模式会判断重复文件,uuid模式不会判断重复文件但是会与客户端文件夹保持完全一致。

无论是md5模式还是uuid模式都会在数据库中保存层级结构信息。

选择建议:

如果需要在服务端保留完整文件夹层级结构就选择uuid

如果在服务端希望不保存重复文件就选择md5

 

md5模式存储

说明:md5存储模式在服务器端不会存在重复文件,适用于对存储空间有较高要求的项目,如互联网项目

1.修改配置

60c5d7cf-9fa2-470e-afe9-a1dc7cf537f8

 

2.使用md5路径生成器

6b53d94f-4d3d-463b-accb-2eba624e4cc2

 

 

3.fd_create.aspx中使用md5路径生成器

88b8a8ea-7905-4082-9e21-5bfcba2afffd

 

最终效果

0ff47c27-29da-4408-92c8-7bd98d30bbfa

 

数据库

fb82bb32-8a34-441e-8b72-e785e4ddb250

 

 

uuid模式存储

为解决文件夹层级结构的问题我们重新设计了路径生成器,借助于新的生成器开发者能够轻松保存本地文件夹信息。

说明:以uuid存储模式上传文件夹将保留原始文件名称和文件夹层级结构,也就是说uuid将完全使用本地文件夹结构来存储。满足政府部门的特定的需求。

uuid存储规则:upload/uid/folders/uuid/folder_name

注意:uuid将不会检查文件重复。uuid会为每一个文件夹单独生成一个uuid,以此来解决文件夹重名问题。 如果用户上传两个同名文件夹test,最终它们会被分别存储在两个uuid文件夹下面。

 

1.修改配置fd_create_uuid.aspx

77de3b0b-5072-4990-9099-a2788193d84a

 

2.使用uuid路径生成器

2ef34286-f6aa-4a29-a200-b83197647540

 

3.fd_create_uuid.aspx中使用uuid生成器

b4ffbee3-4311-4fe7-a3ab-538336a23610

 

最终效果:

本地文件夹结构

eafc88e2-b4f7-438a-87d5-97faf7f6a1e5

 

远程文件夹结构

6101756a-9f0b-4a0c-b3c2-463190929533

 

 

11.6.14. 从服务端取文件夹JSON信息

fd_json.aspx

1.取根文件夹信息

2.根据f_pidRoot取所有子文件信息。只取未上传完的文件列表

3.不需要取子文件夹信息。因为只需要续传文件即可。

 

11.6.15. 文件夹在服务器保存位置

一般在fd_create.aspx.cs中创建。

代码如下:

 

子文件位置在fd_create.aspx.cs指定

aadaadb4-22cc-4bc2-9ed0-132b470e60dc

 

文件夹中的文件以原始文件名称保存

fd_create_uuid.aspx.cs中创建子文件:

b2df335b-52e1-4079-bc4b-cd72d449553a

 

规则如下:

upload////文件夹名称/文件名称。

 

11.6.16. 子文件上传

主要流程如下:

1.fd_create.aspx.cs中分配子文件路径,并保存在数据库中,然后返回数据表中文件的id(idSvr)

2.客户端将文件id和文件在远程服务器的路径传给服务端,f_cretae.aspx.cs根据客户端的id,路径(pathSvr)创建文件。

3.f_post.aspx.cs根据客户端idSvr来写入文件数据。

 

11.6.17. 在未上传完文件列表中显示文件和文件夹

1.    将文件夹信息保存到up6_files表中,通过f_list.aspx加载。

2.    up6_files中增加字段:f_fdTask,表示这是一个文件夹上传任务

3.    up6_filesf_fdChild表示文件是文件夹中的子文件。

4.    up6_folder中存储的信息与up6_files.f_fdID对应。

5.    续传时,判断文件列表项中的文件是不是文件夹任务,如果是,先从服务端取JSON信息。

 

up6.js

, "LoadData": function ()//从服务器加载数据

     f_list.aspx

     DBFile.GetAllUnComplete2//在此函数中判断文件夹项,并为更新文件夹项信息(总大小,已上传百分比较)。

 

12. 用户界面设计

上传界面由HTML拼接而成,主要由GetHtmlFiles方法返回,代码如下:

其中fileItem表示文件项模板,folderItem表示文件夹项模板

开发人员可以通过修改fileItem的结构来调整界面风格。

121b06af-59c3-49bd-b7ed-1ddb72c9b3f3

 

与文件上传对象关联代码:

e20d4f97-da02-4957-9ee1-402bc46c4e04

 

在调整界面样式和风格时可以借助于浏览器调试器工具来辅助设计,以下界面演示使用IE-开发人员工具查看文件项结构

577cd132-f240-420f-9b8d-246a98b0dd83

 

 

13. 断点续传

7e3db7c0-760c-41b4-b50e-4806a3f9c3db

90046d4e-c35a-4c5c-943e-90ec037d6ade

 

13.1. IIS 6.0的设置

ca5037a6-64e0-4ddf-87a7-b5980626836e

开启保持HTTP连接

c8867bc7-5906-4aef-9e4d-eee8b49747f7

 

13.2. tomcat设置

打开conf/server.xml文件

Connector节点中,修改keepAliveTimeout属性和maxKeepAliveRequests属性。建议将数值调整到最大。

<Connector executor="tomcatThreadPool"

               port="80"

protocol="HTTP/1.1"

maxThreads="600"

minSpareThreads="100"

maxSpareThreads="300"

               connectionTimeout="60000"

               keepAliveTimeout="15000"

               maxKeepAliveRequests="1"

               redirectPort="443"

               ....../>

参数说明:

connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。

maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间) the maximum number of HTTP requests that can be held in the pipeline until the connection is closed by the server. Setting this attribute to 1 disables HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 allows an unlimited number of pipelined or keep-alive HTTP requests. If not specified, this attribute is set to 100.

 

13.3. glassfish设置

参考地址:http://www.iteye.com/topic/656368

 

14. 数据库设计

14.1. MySQL

表名:up6_files

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

f_id

int

11

 

 

自增ID

2

f_pid

int

11

 

 

 

0

父级文件夹ID

3

f_pidRoot

int

11

 

 

 

0

根级文件夹ID

4

f_fdTask

tinyint

1

 

 

 

0

表示是否是一个文件夹上传任务

5

f_fdID

int

11

 

 

 

0

文件夹详细ID,与xdb_folders.fd_id对应。

6

f_fdChild

tinyint

1

 

 

 

0

是文件夹中的子项。

7

f_uid

int

11

 

 

 

0

用户ID。与第三方系统整合使用。

8

f_nameLoc

varchar

255

 

 

 

 

文件在本地电脑中的名称。

9

f_nameSvr

varchar

255

 

 

 

 

文件在服务器中的名称。

10

f_pathLoc

varchar

255

 

 

 

 

文件在本地电脑中的完整路径。示例:D:\Soft\QQ2012.exe

11

f_pathSvr

varchar

255

 

 

 

 

文件在服务器中的完整路径。示例:F:\ftp\uer\md5.exe

12

f_pathRel

varchar

255

 

 

 

 

文件在服务器中的相对路径。示例:/www/web/upload/md5.exe

13

f_md5

varchar

40

 

 

 

 

文件MD5

14

f_lenLoc

bigint

19

 

 

 

0

文件总大小。以字节为单位.9,223,372,036,854,775,807 之间的整数

15

f_sizeLoc

varchar

10

 

 

 

0

格式化的文件尺寸。示例:10.03MB

16

f_pos

bigint

19

 

 

 

0

文件续传位置。9,223,372,036,854,775,807 之间的整数

17

f_lenSvr

bigint

19

 

 

 

0

已上传大小。9,223,372,036,854,775,807 之间的整数

18

f_perSvr

varchar

6

 

 

 

0%

已上传百分比。示例:10%

19

f_complete

tinyint

1

 

 

 

0

表示是否已上传完

20

f_time

timestamp

 

 

 

 

CURRENT_TIMESTAMP

文件上传时间

21

f_deleted

tinyint

1

 

 

 

0

是否已删除。

 

表名:up6_folders

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

fd_id

int

11

 

 

文件夹ID

2

fd_name

varchar

50

 

 

 

 

文件夹名称

3

fd_pid

int

11

 

 

 

0

父级ID

4

fd_uid

int

11

 

 

 

0

用户ID

5

fd_length

bigint

19

 

 

 

0

数字化的大小。以字节为单位,示例:1023254

6

fd_size

varchar

50

 

 

 

0

格式化的大小。示例:10G

7

fd_pathLoc

varchar

255

 

 

 

 

文件夹在客户端的路径

8

fd_pathSvr

varchar

255

 

 

 

 

文件夹在服务端的路径

9

fd_folders

int

11

 

 

 

0

文件夹数

10

fd_files

int

11

 

 

 

0

文件数

11

fd_filesComplete

int

11

 

 

 

0

已上传完的文件数。

12

fd_complete

tinyint

1

 

 

 

0

是否已上传完毕

13

fd_delete

tinyint

1

 

 

 

0

是否已删除

14

fd_json

varchar

20000

 

 

 

 

文件夹的JSON数据格式。

15

timeUpload

timestamp

 

 

 

 

CURRENT_TIMESTAMP

上传时间

16

fd_pidRoot

int

11

 

 

 

0

跟级ID

17

fd_pathRel

varchar

255

 

 

 

 

相对路径。基于顶级节点。root\\child\\self

 

14.2. Oracle

表名:UP6_FOLDERS

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

FD_ID

NUMBER

 

 

 

 

文件夹ID

2

FD_NAME

VARCHAR2

50

 

 

 

''   --

 

文件夹名称

3

FD_PID

NUMBER

 

 

 

 

'0'   --

 

父级ID

4

FD_UID

NUMBER

 

 

 

 

'0'   --

 

用户ID

5

FD_LENGTH

NUMBER

19

 

 

 

'' --

 

数字化的大小。以字节为单位,示例:1023254

6

FD_SIZE

VARCHAR2

10

 

 

 

'' --

 

格式化的大小。示例:10G

7

FD_PATHLOC

VARCHAR2

512

 

 

 

''  --

 

文件夹在客户端的路径

8

FD_PATHSVR

VARCHAR2

512

 

 

 

'' 

 

文件夹在服务端的路径

9

FD_FOLDERS

NUMBER

 

 

 

 

'0' 

 

文件夹数

10

FD_FILES

NUMBER

 

 

 

 

'0' 

 

文件数

11

FD_FILESCOMPLETE

NUMBER

 

 

 

 

'0' 

 

已上传完的文件数。

12

FD_COMPLETE

NUMBER

1

0

 

 

'0' 

 

是否已上传完毕

13

FD_DELETE

NUMBER

1

0

 

 

'0' 

 

是否已删除

14

FD_JSON

VARCHAR2

4000

 

 

 

'' 

 

文件夹的JSON数据格式。

15

TIMEUPLOAD

DATE

7

 

 

 

sysdate  

 

上传时间

16

FD_PIDROOT

NUMBER

 

 

 

 

'0'

 

跟级ID

17

FD_PATHREL

VARCHAR2

255

 

 

 

''

 

相对路径。基于顶级节点。root\\child\\self

 

表名:UP6_FILES

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

F_IDSVR

NUMBER

 

 

 

 

 

2

F_PID

NUMBER

 

 

 

 

'0' 

 

父级文件夹ID

3

F_PIDROOT

NUMBER

 

 

 

 

'0' 

 

根级文件夹ID

4

F_FDTASK

NUMBER

1

0

 

 

'0'

 

表示是否是一个文件夹上传任务

5

F_FDID

NUMBER

 

 

 

 

'0' 

 

文件夹详细ID,与xdb_folders.fd_id对应。

6

F_FDCHILD

NUMBER

 

 

 

 

'0' 

 

是文件夹中的子项。

7

F_UID

NUMBER

 

 

 

 

'0' 

 

用户ID。与第三方系统整合使用。

8

F_NAMELOC

VARCHAR2

255

 

 

 

''

 

文件在本地电脑中的名称。

9

F_NAMESVR

VARCHAR2

255

 

 

 

''

 

文件在服务器中的名称。

10

F_PATHLOC

VARCHAR2

512

 

 

 

''

 

文件在本地电脑中的完整路径。示例:D:\Soft\QQ2012.exe

11

F_PATHSVR

VARCHAR2

512

 

 

 

''

 

文件在服务器中的完整路径。示例:F:\ftp\uer\md5.exe

12

F_PATHREL

VARCHAR2

512

 

 

 

'' 

 

文件在服务器中的相对路径。示例:/www/web/upload/md5.exe

13

F_MD5

VARCHAR2

40

 

 

 

 

文件MD5

14

F_LENLOC

NUMBER

19

 

 

 

'0' 

 

文件总大小。以字节为单位.9,223,372,036,854,775,807 之间的整数

15

F_SIZELOC

VARCHAR2

10

 

 

 

'' 

 

格式化的文件尺寸。示例:10.03MB

16

F_POS

NUMBER

19

 

 

 

'0' 

 

文件续传位置。9,223,372,036,854,775,807 之间的整数

17

F_LENSVR

NUMBER

19

 

 

 

'0' 

 

已上传大小。9,223,372,036,854,775,807 之间的整数

18

F_PERSVR

VARCHAR2

6

 

 

 

'0%' 

 

已上传百分比。示例:10%

19

F_COMPLETE

NUMBER

1

0

 

 

'0' 

 

 

20

F_TIME

DATE

7

 

 

 

sysdate   

 

 

21

F_DELETED

NUMBER

1

0

 

 

'0' 

 

 

 

14.3. SQL Server

表名:up6_files

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

f_id

int

4

0

 

 

2

f_pid

int

4

0

 

 

0

父级文件夹ID

3

f_pidRoot

int

4

0

 

 

0

根级文件夹ID

4

f_fdTask

bit

1

0

 

 

0

表示是否是一个文件夹上传任务

5

f_fdID

int

4

0

 

 

0

文件夹详细ID,与xdb_folders.fd_id对应

6

f_fdChild

bit

1

0

 

 

0

是否是文件夹中的子项

7

f_uid

int

4

0

 

 

0

 

8

f_nameLoc

varchar

255

0

 

 

 

文件在本地电脑中的名称。例:QQ.exe

9

f_nameSvr

varchar

255

0

 

 

 

文件在服务器中的名称。一般为文件MD5+扩展名。

10

f_pathLoc

varchar

512

0

 

 

 

文件在本地电脑中的完整路径。

示例:D:\Soft\QQ.exe

 

11

f_pathSvr

varchar

512

0

 

 

 

文件在服务器中的完整路径。

示例:F:\ftp\user1\QQ2012.exe

 

12

f_pathRel

varchar

512

0

 

 

 

文件在服务器中的相对路径。

示例:/www/web/upload/QQ2012.exe

 

13

f_md5

varchar

40

0

 

 

 

文件MD5

14

f_lenLoc

bigint

19

0

 

 

0

文件总长度。以字节为单位

最大值:9,223,372,036,854,775,807

 

15

f_sizeLoc

varchar

10

0

 

 

'0Bytes'

格式化的文件尺寸。示例:10MB

16

f_pos

bigint

19

0

 

 

0

文件续传位置。

最大值:9,223,372,036,854,775,807

 

17

f_lenSvr

bigint

19

0

 

 

0

已上传长度。以字节为单位。

最大值:9,223,372,036,854,775,807

 

18

f_perSvr

varchar

6

0

 

 

'0%'

已上传百分比。示例:10%

19

f_complete

bit

1

0

 

 

0

是否已上传完毕。

20

f_time

datetime

8

3

 

 

getdate

文件上传时间

21

f_deleted

bit

1

0

 

 

0

是否已删除。

 

表名:up6_folders

序号

列名

数据类型

长度

小数位

标识

主键

允许空

默认值

说明

1

fd_id

int

4

0

 

 

 

2

fd_name

varchar

50

0

 

 

 

文件夹名称

3

fd_pid

int

4

0

 

 

0

父级ID

4

fd_uid

int

4

0

 

 

0

用户ID

5

fd_length

bigint

19

0

 

 

0

数字化的大小。以字节为单位。示例:1023652

6

fd_size

varchar

50

0

 

 

 

格式化的大小。示例:10G

7

fd_pathLoc

varchar

255

0

 

 

 

文件夹在客户端的路径

8

fd_pathSvr

varchar

255

0

 

 

 

文件夹在服务端的路径

9

fd_folders

int

4

0

 

 

0

文件夹数

10

fd_files

int

4

0

 

 

0

文件数

11

fd_filesComplete

int

4

0

 

 

0

已上传完的文件数

12

fd_complete

bit

1

0

 

 

0

是否已上传完毕

13

fd_delete

bit

1

0

 

 

0

是否已删除

14

fd_json

varchar

MAX

0

 

 

 

 

15

timeUpload

datetime

8

3

 

 

getdate

上传时间

16

fd_pidRoot

int

4

0

 

 

0

根级ID

17

fd_pathRel

nvarchar

255

0

 

 

 

相对路径。基于顶级节点。root\\child\\self

 

15. 独立文件服务器设计(分布式构架)

HttpUploader6中,可以将用户上传的文件存在一台单独的文件服务器中(FileServer),不需要额外架设FTP服务器。

 

默认单文件上传流程如下:

933fd80e-a398-43fd-8c27-b685cf4d4fde

其中f_create.jsp文件负责创建文件信息:文件在服务器中的保存路径,f_post.jsp负责接收控件上传的文件块数据并保存到目标文件中。在改为独立文件服务器后,f_post.jsp需要布署在文件服务器中(FileServer),f_create.jsp需要返回文件在FileServer中的路径。

 

独立存储构架设计:

577c62c2-443b-4ad0-a4fb-53d3eaa59e8a

环境设置:

File Server存储路径:D:/files

假设用户上传文件a.txt,则f_create.jsp返回FileServer的路径pathSvr=D:/files/a.txtHttpUploader6f_post.jsp发送文件块时会带上pathSvr,告诉f_post.jsp目标文件的位置。这样f_post.jsp就可以将文件块数据保存到指定的位置。

f_create.jsp通过pathSvr告诉f_post.jsp将文件存在哪里。

 

构架图如下:

d83eb1c8-f252-4cf5-8f2b-35bc2603716e

 

15.1. 流程说明

FileServer1,FileServer2,FileServer3,FileServer4,FileServerN这些文件服务器的设置最好一致,比如文件夹的设置,硬盘分区等。

 

1.用户从DBServer中获取远程文件路径。f_create.aspx负责返回文件服务器中的存储路径。

2.控件循环向f_post.aspx(存储服务器中的web程序)发送文件块数据,并附带上远程文件路径信息pathSvr

3.FileServer服务器接收文件块数据,并保存到pathSvr指定的位置。

 

注意:f_create.aspx返回的pathSvr是用来告诉FileServer文件保存路径。

 

15.2. 文件布署

处理文件块数据的逻辑在ajax_post.aspx中,所以只需要在FileServer中布署ajax_post.aspx文件即可。

 

15.3. up6.js配置变化

注意:UrlPost(即f_post.jsp)地址要配置成文件服务器的地址。

     this.Config = {

           "EncodeType"         : "GB2312"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"            : "2,7,88,30955"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

         , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

         , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : "1"//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : false//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:8080/HttpUploader6Oracle/db/fd_create.jsp"

         , "UrlFdComplete"       : "http://localhost:8080/HttpUploader6Oracle/db/fd_complete.jsp"

         , "UrlFdDel"           : "http://localhost:8080/HttpUploader6Oracle/db/fd_del.jsp"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:8080/HttpUploader6Oracle/db/f_create.jsp"

         , "UrlPost"            : "http://FileServer/f_post.jsp"

         , "UrlComplete"        : "http://localhost:8080/HttpUploader6Oracle/db/f_complete.jsp"

         , "UrlList"            : "http://localhost:8080/HttpUploader6Oracle/db/f_list.jsp"

         , "UrlDel"             : "http://localhost:8080/HttpUploader6Oracle/db/f_del.jsp"

 

16. PHP示例

说明:

由于PHP中没有int64类型,整型的最大范围只支持2147483648,所以只能支持2G以下文件的续传。因为续传文件时需要使用fseek函数来定位,fseek函数的第二个参数是int型,在PHPint型的最大范围是2147483648,即2G,如果文件大小超过了2Gfseek就没办法定位。

    示例中的数据库访问模块是使用mysqli写的,所以需要在服务端开启mysqli.dll扩展支持。

 

测试环境搭建步骤:

1.创建up6_files数据表。

2.配置数据库访问信息。

3.配置访问地址。

4.服务端开启mysqli.dll扩展支持。

 

16.1. 文件说明

文件名称

说明

数据库处理逻辑

DBFile.php

文件数据表操作类

DBFolder.php

文件夹数据表操作类

DbHelper.php

数据库操作封装类

FileInf.php

文件信息类。

FileResumer.php

文件块数据处理类

FolderInf.php

文件夹信息类

xdb_files.php

旧的文件信息类

存储逻辑

PathBuilder.php

 

PathMd5Builder.php

 

PathUuidBuilder.php

 

uc_builder.php

 

uc_file_child.php

 

uc_folder.php

 

文件处理逻辑

db/f_complete.php

负责更新数据库中文件项的完成状态,将文件项的完成状态设为已完成。

引用位置:在up6.js中的post_complete函数引用。

db/f_create.php

负责向数据库中添加一个新的文件项,并将新的文件项信息返回给客户端。

引用位置:在up6.js中的md5_complete函数中引用。

db/f_del.php

负责更新数据库中文件项的删除状态,将文件项的删除状态设为已删除。

引用位置:在up6.js中的RemoveFile函数中引用

db/f_list.php

JSON格式列出数据库中所有未完成的文件列表

引用位置:在up6.js中的LoadData函数中引用。

db/f_post.php

负责接收HTTP断点续传控件上传的文件块数据,并更新数据库中文件项进度信息。

文件夹处理逻辑

db/fd_complete.php

负责更新文件夹已完成状态

db/fd_create.php

接收客户端的文件夹JSON信息,

服务端创建层级文件夹,

向数据库添加文件信息和文件夹信息

将文件ID和文件夹ID保存到JSON,并返回给客户端

db/fd_create_uuid.php

 

db/fd_del.php

负责更新文件夹数据表已删除标识。

db/clear.php

清空文件和文件夹表

测试页面

debug/createid.htm

在数据库中创建数据项

debug/del.htm

删除数据

debug/form.htm

表单测试

debug/post.htm

文件上传测试

debug/process.htm

进度功能测试

debug/upload.htm

普通文件上传测试

 

16.2. up6_files数据表

字段名称

类型

长度

描述

f_id

自动编号

 

文件ID,唯一。

f_pid

int

11

父级文件夹ID

f_pidRoot

int

11

根级文件夹ID

f_fdTask

tinyint

1

表示是否是一个文件夹上传任务

f_fdID

int

11

文件夹详细ID,与xdb_folders.fd_id对应。

f_fdChild

tinyint

1

是文件夹中的子项。

f_uid

int

11

用户ID。与第三方系统整合使用。

f_nameLoc

varchar

255

文件在本地电脑中的名称。

f_nameSvr

varchar

255

文件在服务器中的名称。

f_pathLoc

varchar

255

文件在本地电脑中的完整路径。示例:D:\Soft\QQ2012.exe

f_pathSvr

varchar

255

文件在服务器中的完整路径。示例:F:\ftp\uer\md5.exe

f_pathRel

varchar

255

文件在服务器中的相对路径。示例:/www/web/upload/md5.exe

f_md5

varchar

40

文件MD5

f_lenLoc

bigint

19

文件总大小。以字节为单位.9,223,372,036,854,775,807 之间的整数

f_sizeLoc

varchar

10

格式化的文件尺寸。示例:10.03MB

f_pos

bigint

19

文件续传位置。9,223,372,036,854,775,807 之间的整数

f_lenSvr

bigint

19

已上传大小。9,223,372,036,854,775,807 之间的整数

f_perSvr

varchar

6

已上传百分比。示例:10%

f_complete

tinyint

1

表示是否已上传完

f_time

timestamp

 

文件上传时间

f_deleted

tinyint

1

是否已删除。

 

MySQL创建语句

CREATE TABLE IF NOT EXISTS `up6_files` (

  `f_id`                    int(11) NOT NULL auto_increment,

  `f_pid`                   int(11) default '0',

  `f_pidRoot`               int(11) default '0',

  `f_fdTask`                tinyint(1) default '0',

  `f_fdID`                  int(11) default '0',

  `f_fdChild`               tinyint(1) default '0',

  `f_uid`                   int(11) default '0',

  `f_nameLoc`               varchar(255) default '',

  `f_nameSvr`               varchar(255) default '',

  `f_pathLoc`               varchar(255) default '',

  `f_pathSvr`               varchar(255) default '',

  `f_pathRel`               varchar(255) default '',

  `f_md5`                   varchar(40) default '',

  `f_lenLoc`                bigint(19) default '0',

  `f_sizeLoc`               varchar(10) default '0',

  `f_pos`                   bigint(19) default '0',

  `f_lenSvr`                bigint(19) default '0',

  `f_perSvr`                varchar(7) default '0%',

  `f_complete`              tinyint(1) default '0',

  `f_time`                  timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

  `f_deleted`               tinyint(1) default '0',

  PRIMARY KEY  (`f_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 

16.3. 创建up6_files数据表

MySQL中创建数据表

CREATE TABLE IF NOT EXISTS `up6_files` (

  `f_id`                    int(11) NOT NULL auto_increment,

  `f_pid`                   int(11) default '0',

  `f_pidRoot`               int(11) default '0',

  `f_fdTask`                tinyint(1) default '0',

  `f_fdID`                  int(11) default '0',

  `f_fdChild`               tinyint(1) default '0',

  `f_uid`                   int(11) default '0',

  `f_nameLoc`               varchar(255) default '',

  `f_nameSvr`               varchar(255) default '',

  `f_pathLoc`               varchar(255) default '',

  `f_pathSvr`               varchar(255) default '',

  `f_pathRel`               varchar(255) default '',

  `f_md5`                   varchar(40) default '',

  `f_lenLoc`                bigint(19) default '0',

  `f_sizeLoc`               varchar(10) default '0',

  `f_pos`                   bigint(19) default '0',

  `f_lenSvr`                bigint(19) default '0',

  `f_perSvr`                varchar(7) default '0%',

  `f_complete`              tinyint(1) default '0',

  `f_time`                  timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

  `f_deleted`               tinyint(1) default '0',

  PRIMARY KEY  (`f_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 

16.4. 配置数据库访问信息

打开文件php/up6.2/db/DbHelper.php,为下列参数设置正确的值

     function __construct()

     {

        $this->m_host      = "localhost";//数据库地址

         $this->m_dbName    = "HttpUploader6";//数据库名称

         $this->m_uname     = "root";//管理员帐号

         $this->m_upass     = "";//密码

     }

 

16.5. 配置访问地址

打开文件js/up6.js,找到Config属性代码,设置正确的地址。

     this.Config = {

           "EncodeType"         : "utf-8"

         , "Company"            : "荆门泽优软件有限公司"

         , "Version"             : "2,7,103,31652"

         , "License"            : ""//

         , "Authenticate"        : ""//域验证方式:basic,ntlm

         , "AuthName"            : ""//域帐号

         , "AuthPass"            : ""//域密码

        , "CryptoType"         : "md5"//验证方式:md5,sha1,crc

         , "FileFilter"         : "*"//文件类型。所有类型:*。自定义类型:jpg,bmp,png,gif,rar,zip,7z,doc

         , "FileSizeLimit"       : "0"//自定义允许上传的文件大小,以字节为单位。0表示不限制。字节计算工具:http://www.beesky.com/newsite/bit_byte.htm

          , "FilesLimit"         : "0"//文件选择数限制。0表示不限制

         , "AllowMultiSelect"   : true//多选开关。1:开启多选。0:关闭多选

         , "RangeSize"           : "1048576"//文件块大小,以字节为单位。必须为64KB的倍数。推荐大小:1MB

         , "Debug"               : true//是否打开调式模式。true,false

         , "LogFile"            : "F:\\log.txt"//日志文件路径。需要先打开调试模式。

         , "InitDir"            : ""//初始化路径。示例:D:\\Soft

         , "AppPath"            : ""//网站虚拟目录名称。子文件夹 web

        , "Cookie"             : ""//服务器cookie

        , "QueueCount"         : 1//同时上传的任务数

         //文件夹操作相关

         , "UrlFdCreate"        : "http://localhost:81/up6/v1.3-fd/db/fd_create.php"

         , "UrlFdComplete"       : "http://localhost:81/up6/v1.3-fd/db/fd_complete.php"

         , "UrlFdDel"           : "http://localhost:81/up6/v1.3-fd/db/fd_del.php"

         //文件操作相关

         , "UrlCreate"           : "http://localhost:81/up6/v1.3-fd/db/f_create.php"

         , "UrlPost"            : "http://localhost:81/up6/v1.3-fd/db/f_post.php"

         , "UrlComplete"        : "http://localhost:81/up6/v1.3-fd/db/f_complete.php"

         , "UrlList"            : "http://localhost:81/up6/v1.3-fd/db/f_list.php"

         , "UrlDel"             : "http://localhost:81/up6/v1.3-fd/db/f_del.php"

         //x86

        , ie: {

               drop: { clsid: "0868BADD-C17E-4819-81DE-1D60E5E734A6", name: "Xproer.HttpDroper6" }

             , part: { clsid: "BA0B719E-F4B7-464b-A664-6FC02126B652", name: "Xproer.HttpPartition6" }

             , path: "http://www.ncmem.com/download/up6.2/up6.cab"

        }

         //x64

        , ie64: {

               drop: { clsid: "7B9F1B50-A7B9-4665-A6D1-0406E643A856", name: "Xproer.HttpDroper6x64" }

             , part: { clsid: "307DE0A1-5384-4CD0-8FA8-500F0FFEA388", name: "Xproer.HttpPartition6x64" }

             , path: "http://www.ncmem.com/download/up6.2/up64.cab"

        }

        , firefox: { name: "", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.xpi" }

        , chrome: { name: "npHttpUploader6", type: "application/npHttpUploader6", path: "http://www.ncmem.com/download/up6.2/up6.crx" }

        , chrome45: { name: "com.xproer.up6", path: "http://www.ncmem.com/download/up6.2/up6.nat.crx" }

        , exe: { path: "http://www.ncmem.com/download/up6.2/up6.exe" }

         , "SetupPath": "http://localhost:4955/demoAccess/js/setup.htm"

        , "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

      };

 

16.6. 与现有系统整合-将文件与用户ID对应

主要步骤如下:

1.在引用页面设置HttpUploaderMgr.Fields的值

2.up6.jsmd5_complete方法中增加Fields属性

3.f_create.php页面中接收附加信息

 

up6.js文件中有一个Fields属性配置,可通过扩展这个属性的字段向服务器上传特殊标识信息

     "Fields": {"uname": "test","upass": "test","uid":"0","fid":"0"}

 

1.在引用页面可以设置uid的值

<script language="javascript" type="text/javascript">

    var cbMgr = new HttpUploaderMgr();

    cbMgr.Config.Fields["uid"] = 2;//在这里可以设置为当前用户ID的值

//也可以动态添加其它字段

cbMgr.Config.Fields["Category"] = "soft";

 

    $(document).ready(function()

    {

         cbMgr.load_to("FilePanel");

    });

    </script>

 

2.up6.jsmd5_complete方法中增加Fields属性

     this.md5_complete = function (json)

    {

        this.fileSvr.md5 = json.md5;

        this.event.md5Complete(this, json.md5);//biz event

        this.ui.msg.text("MD5计算完毕,开始连接服务器...");

 

        var loc_path = encodeURIComponent(this.fileSvr.pathLoc);

        var loc_len = this.fileSvr.lenLoc;

        var loc_size = this.fileSvr.sizeLoc;

        var param = { md5: json.md5, uid: this.fields.uid, lenLoc: loc_len, sizeLoc: loc_size, pathLoc: loc_path, time: new Date().getTime() };

 

        $.ajax({

            type: "GET"

            , dataType: 'jsonp'

            , jsonp: "callback" //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

            , url: this.Config["UrlCreate"]

            , data: param

            , success: function (sv)

            {

                //debugMsg("md5_complete success");

                _this.svr_create(sv);

            }

            , error: function (req, txt, err)

            {

                alert("向服务器发送MD5信息错误!" + req.responseText);

                _this.ui.msg.text("向服务器发送MD5信息错误");

                _this.ui.btn.del.text("续传");

            }

            , complete: function (req, sta) { req = null; }

        });

    };

3.f_create.php中接收附加信息值

$uid = $_GET['uid'];

posted on 2012-02-17 11:10  荆门泽优软件有限公司  阅读(10068)  评论(0编辑  收藏

导航

统计信息