Word图片上传控件开发文档-ASP

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

保留所有权利

产品博客:http://www.cnblogs.com/xproer/

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

产品首页:http://www.ncmem.com/webplug/wordpaster/index.asp

在线演示-CKEditor3.xhttp://www.ncmem.com/products/word-imagepaster/ckeditor353/index.html

在线演示-FCKEditor2.xhttp://www.ncmem.com/products/word-imagepaster/fckeditor2461/index.html

产品介绍:http://www.cnblogs.com/xproer/archive/2011/04/08/2009500.html

升级日志:http://www.cnblogs.com/xproer/archive/2011/04/08/2009503.html

资源下载:cab安装包(x86)(访问密码:0993),cab安装包(x64)(访问密码:a7ab),crx安装包(访问密码:3bfd),xpi安装包(访问密码:1416),exe安装包(访问密码:a17b),开发文档(访问密码:c4cf),VC运行库,数字证书根证书,MathType6.5,

示例下载(ASP)FCKEditor2.x示例(访问密码:8f82),CKEditor3.x示例(访问密码:8db3),CKEditor4.x示例(访问密码:c590),

示例下载(.NET)FCKEditor2.x示例(访问密码:58fa),FCKEditor2.x-ExtJs示例CKEditor3.x示例(访问密码:b55a)CKEditor3.x-ExtJs示例CKEditor4.x示例(访问密码:2353)KindEditor3.x示例(访问密码:f4c1),KindEditor4.x示例(访问密码:48d1),UEditor1.x示例(访问密码:44a5),jmeditor(访问密码:5b19),xheditor示例(访问密码:a0da),tinymce3x示例(访问密码:7be0),tinymce4x示例(访问密码:442d),

示例下载(JSP)FCKEditor2.x示例(访问密码:bee6),CKEditor3.x示例(访问密码:c079),CKEditor3.x-ExtJs示例,CKEditor4.x示例(访问密码:031d),KindEditor3.x示例(访问密码:3590),KindEditor4.x示例(访问密码:7619),tinymce3x示例(访问密码:e73f),tinymce4x示例(访问密码:4e83),UEditor1.x示例(访问密码:f661),xheditor1x示例(访问密码:7bb8),

示例下载(PHP)FCKEditor2.x示例(访问密码:bab0),CKEditor3.x示例(访问密码:71e0),CKEditor4.x示例(访问密码:cfeb),KindEditor3.x示例(访问密码:8de9),KindEditor4.x示例(访问密码:e39a),tinymce3x示例(访问密码:c5d8),tinymce4x示例(访问密码:4154),UEditor1.x示例(访问密码:d34c),xheditor1x示例(访问密码:b779),HDwiki5.0(访问密码:a223),wordpress 3.7.1(访问密码:563d),

联系信箱:[email protected]

联系QQ1085617561

 

1.      概述

对于大多数用户来说,将Word中的图片上传到Web服务器来说是一件非常不方便的事情,许多情况下用户甚至需要手动将一张张图片上传到Web服务器中,这些重复操作将会浪费用户的许多时间。

现在新颖网络发布了Word图片上传控件,借助于这个控件可以帮助用户解决一张张上传Word图片的问题。特别是对于一些网站编辑人员来说,这个功能可以极大的提高他们的工作效率,减少重复工作。

新颖网络Word图片粘贴上传控件能够帮助用户将Word中的图片全部自动上传到Web服务器中。特别是当Word文档中的图片非常多时,这个功能能够极大的提高工作效果。在上传Word图片时控件不会破坏Word文档格式。不仅如此,新颖网络Word图片上传控件还可以自动上传剪帖板中图片,电脑硬盘中的图片。

对于开发人员来讲,新颖网络Word图片上传控件能够非常容易的整合到OA,新闻网站,博客或者其它WEB应用程序中,并为用户带来前所未有的体验。

 

2.      集成到现有系统中

搭建测试环境:

1.修改upload.asp中的网站前缀

Word图片上传控件开发文档-ASP_第1张图片

2.修改index.html中的PostUrl

Word图片上传控件开发文档-ASP_第2张图片


注意:

1.在本地搭建测试环境时,请勿将演示项目解压到桌面,因为IIS不支持中文路径。如果解压到桌面测试会出现错误。

2.在本地测试时,请通过IIS为演示项目建立虚拟目录或网站。一般通过IIS创建。否则无法正常演示。

2.1.   上传文件

使用Word图片上传控件需要将下列文件和文件夹上传到服务器中,以CKEditor 3.5.3 为例:

ckeditor

css

js

ImageFileUploader.css

ImageFileUploader.js

ImagePaster.css

ImagePaster.js

upload.gif

WordPaster.cab

注意:请不要解压WordPaster.cab,将完整的WordPaster.cab文件上传到服务器中,IE浏览器会自动安装CABCAB文件相当于是一个自动安装控件的脚本。

 

2.2.   修改版本号和CLSID

控件的版本号以及控件的路径是写在ImagePaster.js文件里面。下面的代码标识了控件位置和版本号:

function SetupWordPaster()

{

     var acx = '<div style="display: none;">';

     //图片粘贴上传控件

     acx += ' <object id="Paster" classid="clsid:DC 4A 6931-3570-44b4-842D-C13EE637BBC1"';

     acx += ' codebase="http://www.ncmem.com/products/word-imagepaster/WordPaster.cab#version=1,2,4,45165"';

     acx += ' width="1" height="1" ></object>';

     //Word图片上传控件

     acx += ' <object id="Uploader" classid="clsid:26CFEDE7-789D-4077-B49D-C 7F 1D7150B93"';

     acx += ' codebase="http://www.ncmem.com/products/word-imagepaster/WordPaster.cab#version=1,2,4,45165"';

     acx += ' width="1" height="1" ></object>';

     acx += '</div>';

 

     //添加图片上传信息层

     acx += '<div id="PasterMessager">';

     acx += '<img alt="进度图标" src="../upload.gif" /><span>图片上传中...</span><span>10%</span></div>';

     document.write(acx);

}

注意:

当控件升级(版本号修改)CAB文件位置改变,必须修改ImagePaster.js中的代码。否则用户的IE浏览器将无法正常加载控件。

为了避免冲突,每个企业的clsid都不相同,在整合到Web中时请向新颖网络技术支持人员索取企业ID

 

2.3.   修改HTML页面

添加控件样式和JS文件

<head>

    ......

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

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

     <link type="text/css" rel="stylesheet" href="../css/ui-lightness/jquery-ui- 1.8.11 .custom.css" />

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

     <script type="text/javascript" language="javascript" src="../js/jquery-ui- 1.8.11 .custom.min.js"></script>

     <script type="text/javascript" language="javascript" src="../ckeditor/ckeditor.js"></script>

    <script type="text/javascript" language="javascript" src="../ImageFileUploader.js"></script>

     <script type="text/javascript" language="javascript" src="../ImagePaster.js"></script>

</head>

 

在页面的顶部script标识内添加下面的代码

<script type="text/javascript">

     var fckEditorInstance = null;

     var ImagePaster = null;

     var manager = null;

 

     $(document).ready(function()

     {

         //图片粘帖控件

         ImagePaster = new ImagePasterManager("PasterMessager");

         //此地址应该修改为实际上的上传地址。

         ImagePaster.Config["PostUrl"] = "http://localhost:4415/asp.net/upload.aspx";

         ImagePaster.Config["EncodeType"] = "GB2312";

 

         manager = new UploaderManager("FilePostLister", "UploaderTemplate", "FilePostLine");

         manager.Config["EncodeType"] = ImagePaster.Config["EncodeType"];

         manager.Config["PostUrl"] = ImagePaster.Config["PostUrl"];

 

         var editor = CKEDITOR.instances.editor1;

         manager.Init(editor);

         ImagePaster.Init(editor);

     });

</script>

 

在页面的body内部添加安装控件的代码以及控件信息层的代码。

如果需要根据自已的业务逻辑来处理用户上传的图片请参考ImagePaster.js文件中的ImagePaster_Complete()函数

<script type="text/javascript">

    //安装控件CAB

    SetupWordPaster();

   

    //加载CKEditor编辑器

     CKEDITOR.replace('editor1',

     {

         extraPlugins: 'imagepaster',

         toolbar:

         [

              ['imagepaster']

         ]

     });

 

     //加载上传列表模板

     WriteFileUploader();

</script>

 

3.      用户接口

3.1.   配置上传地址

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

     var ImagePaster = null;

 

     window.onload = function() {

         ImagePaster = new ImagePasterManager("CaptureMessage");

         //设置上传路径

         ImagePaster.Config["PostUrl"] = "http://localhost:1830/asp.net/upload.aspx";

     }

</script>

 

3.2.   设置服务器编码方式

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

     var ImagePaster= null;

 

     window.onload = function() {

         ImagePaster = new ImagePasterManager("PasterMessager");

         //设置服务器编码方式,支持GB2312/UTF-8

         ImagePaster.Config["EncodeType"] = "GB2312";

     }

</script>

 

3.3.   处理图片上传完毕的事件

//事件-传输完毕

function ImagePaster_Complete(obj)

{

     obj.Progress.innerText = "100%";

     obj.Message.innerText = "上传完成";

     obj.State = ImagePasterState.Complete;

     obj.InfoDiv.style.display = "none"; //隐藏信息层

 

     //插入到编辑器

     var img = "<img src=\"";

     img += obj.Com.Response;

     img += "\" />";

     // 添加到编辑器中

     obj.Editor.insertHtml(img);

}

 

3.4.   设置附加信息

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

客户端:

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

服务端:

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

 

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

客户端:

manager.Fields["f1"] = "f1";

manager.Fields["f2"] = "f2";

manager.Fields["f3"] = "f3";

manager.Fields["f4"] = "f4";

manager.Fields["f5"] = "f5";

服务端(ASP.NET)

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

string f1 = Request.Form["f2"];

string f1 = Request.Form["f3"];

string f1 = Request.Form["f4"];

string f1 = Request.Form["f5"];

 

4.      JavaScript对象

4.1.   ImagePasterManager对象

类型JavaScript

图片粘贴器管理对象。负责图片的上传操作。

 

语法:

JavaScript(声明)

function ImagePasterManager(pasterID)

 

参数

     pasterID 显示处理信息的层ID

 

方法

 

名称

说明

Init

初始化。

IsBitmap

检查剪切板中是否有图片数据。

Paste

执行粘贴操作。将剪切板中的图片数据上传到服务器中。

 

属性

Fields属性

上传时附加的额外信息。

 

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

 

以下示例演示上传时添加用户名和密码的额外信息:

var manager = new DownloaderManager("FilePostLister");

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

manager.Fields["UserPass"] = "test";

 

Config属性

提供全局配置信息。

 

语法:

this.Config = {

         "PostUrl": "http://www.ncmem.com/upload.aspx"

         , "EncodeType": "GB2312"

         , "Licensed": "北京新颖网络"

         , "ImageType": "JPG"   //指定图片上传格式。JPG/PNG/GIF/BMP

         , "ThumbWidth": 0      //缩略图宽度。0表示不使用缩略图

         , "ThumbHeight": 0     //缩略图高度

     };

 

EncodeType

服务器编码方式。请求的URL如果带参数,则需要设置此编码

 

如果服务器端编码方式是UTF-8

<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

则客户端也必须是UTF-8

var ImagePaster = new ImagePasterManager("PasterMessager");

ImagePaster.Config["EncodeType"] = "UTF-8";

 

如果服务端编码方式是GB2312

<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>

则客户端也必须是GB2312

var ImagePaster= new ImagePasterManager("PasterMessager");

ImagePaster.Config["EncodeType"] = "GB2312";

 

5.      ActiveX控件

5.1.   Xproer.ImagePasterPro控件

CLSIDDC 4A 6931-3570-44b4-842D-C13EE637BBC1

类型ActiveX

图片粘贴器。支持本地图片文件粘贴,剪帖板图片粘贴。

属性

 

名称

说明

Object

JS对象。

PostUrl

图片上传地址。例:http://www.ncmem.com/upload.aspx

EncodeType

服务器编码类型。例:GB2312/UTF-8

方法

 

名称

说明

Paste

执行粘帖操作,将剪切板中的图片数据上传到服务器中,然后获取服务器返回的图片URL地址。

AddField

添加附加字段信息。

Stop

停止上传图片数据。

IsBitmap

判断剪切板中的数据是否是图片数据。

 

事件

 

名称

说明

OnComplete

图片上传完成事件。

OnPost

图片传输进度事件。此事件每隔一秒将会被调用一次。

OnError

图片上传错误事件。

OnConnected

服务器连接成功事件

 

上传信息

图片粘贴插件将会向WEB服务器提交以下信息:

Content-Disposition: form-data; name="imgFile"; filename="temp.jpg"

5.2.   Xproer.ImageFileUploader控件

CLSID26CFEDE7-789D-4077-B49D-C 7F 1D7150B93

类型ActiveX

图片文件上传控件。支持WORD中的图片。

注意:此控件只支持图片文件上传。

属性

 

名称

说明

Object

JS对象。

PostUrl

图片上传地址。例:http://www.ncmem.com/upload.aspx

EncodeType

服务器编码类型。例:GB2312/UTF-8

ImageType

图片上传格式。留空表示以图片文件格式上传。

支持图片格式:JPG/PNG/GIF/BMP

Response

WEB服务器返回的数据。一般为图片的URL地址。

LocalFile

本地文件路径。

FileID

文件ID,ID必须为1,用来标识每一个上传任务。

方法

 

名称

说明

Post

开始上传本地图片文件。

Stop

停止上传图片数据。

AddField

添加附加字段信息。

IsBitmap

判断剪切板中的数据是否是图片数据。

AddField

添加附加字段信息。

示例:

UserName=myname

UserPass=mypass

事件

 

名称

说明

OnComplete

图片上传完成事件。

OnPost

图片传输进度事件。此事件每隔一秒将会被调用一次。

OnError

图片上传错误事件。

OnConnected

服务器连接成功事件

 

6.      UI模板

6.1.   图片粘贴进度信息模板

您可以根据实际需求来修改以下模板。

ImagePaster.css

/*图片粘贴控件消息样式*/

#PasterMessager

{

    font-family: 新宋体;font-size: 12px; background-color: #FFFFFF; display:none;

}

#PasterMessager img{ float:left; border:0;}

#PasterMessager span{ float:left;}

/**/

body{font-size: 12px;font-family: 宋体;}

.demoHeaders { margin-top: 2em; }

#dialog_link {padding: .4em 1em .4em 20px;text-decoration: none;position: relative;}

#dialog_link span.ui-icon {margin: 0 5px 0 0;position: absolute;left: .2em;top: 50%;margin-top: -8px;}

 

HTML:

<div id="PasterMessager">

     <img alt="进度图标" src="upload.gif" /><span>图片上传中...</span><span>10%</span>

</div>

6.2.   图片上传进度信息模板

ImageFileUploader.css文件

/*文件列表框*/

#FilePostLister

{

    border: 1px solid #6FBCE2;

    background-color: #FFFFFF;

    font-family: 新宋体;

    font-size: 12px;

    width: 450px;

    height:400px;

    overflow-x:hidden;

    overflow-y:scroll;

}

/*细线*/

.Line{background-color: #E3E6EB;overflow: hidden;display: none;height: 1px;}

/*新构架*/

div.UploaderItem{font-family: 新宋体;font-size: 12px; background-color: #FFFFFF;width: 410px; height:55px; margin:5px 10px 0 20px;display:none;}

div.top-space{margin:3px 0 0 0;}

div.UploaderItemLeft{width:370px; float:left;}

div.UploaderItemRight{width:30px; float:left;margin:3px 0 0 0;}

div.UploaderItem div.FileName{font-weight: bold; overflow:hidden; width:364px;word-break: break-word; /* 文本行的任意字内断开 */

         word-wrap: break-word; /* IE */

         white-space: -moz-pre-wrap; /* Mozilla */ }

div.UploaderItem div.ProcessBorder{padding: 0px;border: 1px solid #AAAAAA;width:364px;}

div.UploaderItem div.Process{ height:12px; background-color: #A5DF16;width:0;/*width:200px;*/}

div.UploaderItem div.PostInf{color: # 7A 8F 99;}

div.UploaderItem div.ProcessNum{width:30px; height:14px; line-height:14px; margin:3px 0 0 0;}

div.UploaderItem a.Btn,div.UploaderItem a.Btn:hover{text-decoration: underline; color:#244281; height:12px;display:block;}

 

HTML模板

<!--上传列表模板-->

     <div class="UploaderItem" id="UploaderTemplate">

         <div class="UploaderItemLeft">

              <div class="FileName top-space">HttpUploader程序开发.pdf</div>

              <div class="ProcessBorder top-space">

                   <div class="Process"></div>

              </div>

              <div class="PostInf top-space">已上传:15.3MB 速度:20KB/S 剩余时间:10:02:00</div>

         </div>

         <div class="UploaderItemRight">

              <a class="Btn" href="javascript:void(0)">取消</a>

              <div class="ProcessNum">35%</div>

         </div>

     </div>

     <!--分隔线-->

     <div class="Line" id="FilePostLine"></div>

<!-- 上传列表 -->

     <div id="dialog" title="上传图片">

         <div id="FilePostLister"></div>

     </div>

7.      服务器支持

7.1.   ASP

7.1.1.    Upfile_Start.asp文件

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

 

<!--#include file="Upfile_class.asp"-->

<%

const upload_type=0   '上传方法:=无惧无组件上传类

SaveUpFilesPath="upload/"

const UpFileType="jpg|bmp|gif|png|doc|xls|rar|pdf|zip"

const EnableUploadFile="Yes"

const MaxFileSize=102400

 

dim upload,oFile,formName,SavePath,filename,fileExt,oFileSize

dim EnableUpload

dim arrUpFileType

dim ranNum

dim msg,FoundErr

msg=""

FoundErr=false

EnableUpload=false

 

SavePath = SaveUpFilesPath   '存放上传文件的目录

if right(SavePath,1)<>"/" then SavePath=SavePath&"/" '在目录后加(/)

 

'使用化境无组件上传类

call upload_0()

 

'使用化境无组件上传类

sub upload_0()

     set upload=new upfile_class ''建立上传对象

    

     upload.GetData(104857600)   '取得上传数据,限制最大上传M

     if upload.err > 0 then  '如果出错

         select case upload.err

              case 1

                   response.write "请先选择你要上传的文件!"

              case 2

                   response.write "你上传的文件总大小超出了最大限制(M"

         end select

         response.end

     end if

    

     pic1=trim(upload.form("pic1"))

     form1=trim(upload.form("form1"))

    

     for each formName in upload.file '列出所有上传了的文件

         set ofile=upload.file(formName)  '生成一个文件对象

         oFileSize=ofile.filesize

         if oFileSize<100 then

              msg="请先选择你要上传的文件!"

              FoundErr=True

         elseif ofilesize>(MaxFileSize*1024) then

              msg="文件大小超过了限制,最大只能上传" & CStr(MaxFileSize) & "K的文件!"

              FoundErr=true

         end if

 

         fileExt=lcase(ofile.FileExt)

         arrUpFileType=split(UpFileType,"|")

         for i=0 to ubound(arrUpFileType)

              if fileEXT=trim(arrUpFileType(i)) then

                   EnableUpload=true

                   exit for

              end if

         next

         if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then

              EnableUpload=false

         end if

         if EnableUpload=false then

              msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType

              FoundErr=true

         end if

        

        

         strJS="<SCRIPT language=javascript>" & vbcrlf

         '图片上传成功

         if FoundErr<>true then

              randomize

              ranNum=int(900*rnd)+100

              filename=SavePath&year(now)&month(now)&"_"&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt

 

              ofile.SaveToFile Server.mappath(FileName)   '保存文件

              '将文件路径返回给控件

              response.write filename

         Else

              response.write "图片上传失败"

         end if

        

         set file=nothing

     next

     set upload=nothing

end sub

%>

 

7.1.2.    Upfile_class.asp文件

此文件定义了ASP文件上传对象。

 

<%

Dim oUpFileStream

'----------------------------------------------------------------------

'文件上传类

Class UpFile_Class

 

Dim Form,File,Version,Err

 

Private Sub Class_Initialize

 Version = "文件上传类Version V1.2"

 Err = -1

End Sub

 

Private Sub Class_Terminate 

  '清除变量及对像

  If Err < 0 Then

    Form.RemoveAll

    Set Form = Nothing

    File.RemoveAll

    Set File = Nothing

    oUpFileStream.Close

    Set oUpFileStream = Nothing

  End If

End Sub

  

Public Sub GetData (MaxSize)

   '定义变量

  Dim RequestBinData,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo

  Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName

  Dim iFindStart,iFindEnd

  Dim iFormStart,iFormEnd,sFormName

   '代码开始

  If Request.TotalBytes < 1 Then  '如果没有数据上传

    Err = 1

    Exit Sub

  End If

  If MaxSize > 0 Then '如果限制大小

    If Request.TotalBytes > MaxSize Then

    Err = 2   '如果上传的数据超出限制

    Exit Sub

    End If

  End If

  Set Form = Server.CreateObject ("Scripting.Dictionary")

  Form.CompareMode = 1

  Set File = Server.CreateObject ("Scripting.Dictionary")

  File.CompareMode = 1

  Set tStream = Server.CreateObject ("ADODB.Stream")

  Set oUpFileStream = Server.CreateObject ("ADODB.Stream")

  oUpFileStream.Type = 1

  oUpFileStream.Mode = 3

  oUpFileStream.Open

  oUpFileStream.Write Request.BinaryRead (Request.TotalBytes)

  oUpFileStream.Position = 0

  RequestBinData = oUpFileStream.Read

  iFormEnd = oUpFileStream.Size

  bCrLf = ChrB (13) & ChrB (10)

  '取得每个项目之间的分隔符

  sSpace = MidB (RequestBinData,1, InStrB (1,RequestBinData,bCrLf)-1)

  iStart = LenB  (sSpace)

  iFormStart = iStart+2

  '分解项目

  Do

    iInfoEnd = InStrB (iFormStart,RequestBinData,bCrLf & bCrLf)+3

    tStream.Type = 1

    tStream.Mode = 3

    tStream.Open

    oUpFileStream.Position = iFormStart

    oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart

    tStream.Position = 0

    tStream.Type = 2

    tStream.CharSet = "gb2312"

    sInfo = tStream.ReadText     

    '取得表单项目名称

    iFormStart = InStrB (iInfoEnd,RequestBinData,sSpace)-1

    iFindStart = InStr (22,sInfo,"name=""",1)+6

    iFindEnd = InStr (iFindStart,sInfo,"""",1)

    sFormName = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)

    '如果是文件

    If InStr  (45,sInfo,"filename=""",1) > 0 Then

      Set oFileInfo = new FileInfo_Class

      '取得文件属性

      iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10

      iFindEnd = InStr (iFindStart,sInfo,"""",1)

      sFileName = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)

      oFileInfo.FileName = Mid (sFileName,InStrRev (sFileName, "\")+1)

      oFileInfo.FilePath = Left (sFileName,InStrRev (sFileName, "\"))

      oFileInfo.FileExt = Mid (sFileName,InStrRev (sFileName, ".")+1)

      iFindStart = InStr (iFindEnd,sInfo,"Content-Type: ",1)+14

      iFindEnd = InStr (iFindStart,sInfo,vbCr)

      oFileInfo.FileType = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)

      oFileInfo.FileStart = iInfoEnd

      oFileInfo.FileSize = iFormStart -iInfoEnd -2

      oFileInfo.FormName = sFormName

      file.add sFormName,oFileInfo

    else

    '如果是表单项目

      tStream.Close

      tStream.Type = 1

      tStream.Mode = 3

      tStream.Open

      oUpFileStream.Position = iInfoEnd

      oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2

      tStream.Position = 0

      tStream.Type = 2

      tStream.CharSet = "gb2312"

      sFormValue = tStream.ReadText

      If Form.Exists (sFormName) Then

        Form (sFormName) = Form (sFormName) & ", " & sFormValue

        else

        form.Add sFormName,sFormValue

      End If

    End If

    tStream.Close

    iFormStart = iFormStart+iStart+2

    '如果到文件尾了就退出

  Loop Until  (iFormStart+2) >= iFormEnd

  RequestBinData = ""

  Set tStream = Nothing

End Sub

End Class

 

'----------------------------------------------------------------------------------------------------

'文件属性类

Class FileInfo_Class

Dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt

'保存文件方法

Public Function SaveToFile (Path)

  On Error Resume Next

 

   if Instr(lcase(Path),"asp")<>0 or Instr(lcase(Path),"asa")<>0 or Instr(lcase(path),"cer")<>0  then

     response.write("文件已上传成功...")

     response.end

  end if

  Dim oFileStream

  Set oFileStream = CreateObject ("ADODB.Stream")

  oFileStream.Type = 1

  oFileStream.Mode = 3

  oFileStream.Open

  oUpFileStream.Position = FileStart

  oUpFileStream.CopyTo oFileStream,FileSize

  oFileStream.SaveToFile Path,2

  oFileStream.Close

  Set oFileStream = Nothing

End Function

 

'取得文件数据

Public Function FileData

  oUpFileStream.Position = FileStart

  FileData = oUpFileStream.Read (FileSize)

End Function

 

End Class

%>

你可能感兴趣的:(word)