WEB环境中后台自动上传文件至数据库的实现

原创 2004年02月05日 00:45:00
 


概述

本文讲解了一个使用办公之星控件实现后台自动上传文件的例子,使用该方法没有选择文件步骤,可以在WEB环境下实现类似单机环境下点击保存文件的效果。

引言

为了在HTML网页中获得上传功能,在客户端我们可以使用如下格式的FORM:

<FORM NAME="myForm"
      ACTION="TargetURL.asp"
      ENCTYPE="multipart/form-data"
      METHOD="post">
      <INPUT TYPE="file" NAME="myFile">
      <INPUT TYPE="submit" VALUE="Upload File">
</FORM>

这种方案在客户端和服务器端的使用都有很多限制。首先,我们必须使用POST方法,因为GET方法无法处理这样的表单数据。并且,没有什么方法可以在不使用表单的情况下引发一个POST动作。把数据发送给表单处理程序后,浏览器将会把处理程序作为新页面加载,然后使用者会看到一个不讨人喜欢的页面转换过程。

办公之星控件中的上传方案

需要按照如下步骤操作:

客户端:

将办公之星控件所编辑的文档保存至本地
利用HTTP协议将保存的临时文档发送给Web服务器

服务器端:

从Request对象中读出上传的二进制文档
读出二进制数据并且存储到数据库的BLOB型字段中。

利用办公之星控件可以在WEB环境下实现和WORD功能相当的图文混排以及字处理功能,但如何将所编辑的文档保存至服务器端?上述的方案似乎没有什么新东西。按照前言中的说明,file控件的value值为只读,一定存在选择文档在手动点击上传按钮的过程。是这样吗?先介绍二个办公之星控件接口方法:

1. SaveToTempFile(str filename)

将当前用办公之星控件编辑的文档保存至本地形成一个临时文件,参数filename为临时文件的文件名称。该方法会返回一个参数,这个参数表示临时文件的绝对路径。示例: SaveToTempFile("abc.ost")

2. UpLoadFile(str filepath,str operatorfile)

将本地指定文件上传至服务器端,参数filepath为本地待上传文件的绝对路径,operatorfile为服务器端用来接收上传文件流的文件名称。该方法会返回一个参数,提示操作过程中是否成功。示例:UpLoadFile("c:/abc.ost","http://www.oapro.com/save.asp")

看到这里,相信您已经明白了,办公之星控件已提供接口方法,将指定文件自动上传。下面给出客户端完整的代码:

<script language="vbscript">
Public Sub mnuFileSave_click()
   dim str,strRet

   '生成临时文件
   str=OStar.SaveToTempFile("abc.ost")

   '将临时文件上传
   strRet=OStar.UpLoadFile(str,"http://www.oapro.com/save.asp")

   '上传成功与否提示
   alert(strRet)
End Sub
</script>

上述页面中OStar为办公之星控件在页面中的操作对象名称。以下代码为服务器端如何处理上传文件并保存至数据库:

<%
   ' 定义变量和对象
   dim sql
   dim rs
   dim UpFile
   dim conn
   dim connstr
   dim db

   '保存上传文件的数据库名称
   db="db.mdb"

   '取得上传的二进制数据
   UpFile=Request.BinaryRead(Request.TotalBytes)

   '建立数据库连接
   Set conn = Server.CreateObject("ADODB.Connection")
   connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
   conn.Open connstr
   sql="select UpFile from OStarRepTemplate where (id is null)"
   rs.open sql,conn,1,3 
   rs.addnew

   '添加上传的二进制内容入数据库
   rs("UpFile").AppendChunk UpFile
   rs.update 

   ' 销毁数据库连接对象
   rs.close 
   set rs=nothing 
   conn.close 
   set conn=nothing 

   ' 返回存储信息
   Response.Write "Upload successful!"
%>

以上服务器端代码并未考虑是否第一次保存,如果是的话,那么在数据库中新建一个记录保存上传的文件,如果不是第一次保存,那么应该是修改以前保存的记录。

使用该方法的益处

不引起页面转换。
不需要专用组件。

这段程序是纯脚本写成的,可以很容易的插入到其他代码中,而不需要任何HTML对象的配合。还可以把这个逻辑在任何支持COM标准的语言中实现。

演示范例

为了更生动地说明以上方法的效果,这里给出一个演示范例,范例源码可从这里下载。

注:以上接口最新版办公之星控件(最新版办公之星控件试用版从这里下载)才有提供。

 

文件上传控件Fileupload(实现文件上传并写入数据库)

Fileupload实现文件上传并写入数据库
  • lj_2_0_2
  • lj_2_0_2
  • 2015年11月22日 12:58
  • 4780

Web系统自动化部署脚本

Web开发的项目,除了在本地直接运行外,还可能经常需要在服务器上部署。 写了个自动化部署的脚本,仅供参考。 不少地方需要配置路径,个人建议使用绝对路径,不用依赖执行脚本时所在的路径。...
  • FansUnion
  • FansUnion
  • 2014年10月30日 11:46
  • 2174

PHP实现上传文件并存进数据库的方法

本文实例讲述了PHP实现上传文件并存进数据库的方法。分享给大家供大家参考。具体如下: show_add.php文件如下: 1 2 3 4 5 6 7 8 9...
  • wakice
  • wakice
  • 2017年02月17日 09:57
  • 290

上传文件到服务器方式之一:使用InputFile的ValueChangeListener

开发环境:JDeveloper 11.1.2.0.0。 说明:本文改自本人旧作,使用了目前最新的JDeveloper 11.1.2.0.0重新开发验证。(2011-8-1) 1. 新增页面:u...
  • Beckben
  • Beckben
  • 2014年08月20日 19:42
  • 827

Java SpringMVC浏览器端上传文件至服务器

Java SpringMVC浏览器端上传文件至服务器
  • dxk506512674
  • dxk506512674
  • 2016年07月13日 14:31
  • 892

表单文件上传后台处理程序

链接-->用到两个jar包:commons-io-2.5.jar commons-fileupload-1.3.2.jar package com.controls; import java...
  • dreamwbt
  • dreamwbt
  • 2016年12月14日 09:56
  • 1499

将文件上传到数据库 和 从数据库下载文件到本地

有时候我们需要把图片、文档、dll文件、等等,上传的数据库,然后当需要的时候再从数据库中读取到本地,下面我以上传图片为例,讲解一下如何把本地的一张图片上传到数据库,然后再从数据库下载到本地。  ...
  • qq_33855133
  • qq_33855133
  • 2017年06月15日 14:32
  • 1352

文件上传三剑客(二)-后台数据库存储

上一篇,说的是文件存储,
  • wutbiao
  • wutbiao
  • 2014年10月12日 16:38
  • 2612

上传文件至数据库并下载

在FineReport中,会出现希望直接将txt、excel等文件整个保存在数据库中进行备份,并且希望通过FineReport制作报表将这些文件下载下来的情况。...
  • nayun123
  • nayun123
  • 2017年01月05日 09:41
  • 1760

smartupload实现 jsp页面上传文件 将文件以二进制形式保存在数据库

jspSmartUpload : Sample 4 // Variables int count=0; Connection con = DBConnecti...
  • zero_caicai
  • zero_caicai
  • 2017年05月14日 20:00
  • 94
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB环境中后台自动上传文件至数据库的实现
举报原因:
原因补充:

(最多只允许输入30个字)