ASPUpLoad 文件上传

深入解析AspUpload 3.0:ASP文件上传组件 AspUpload是Active Server Pages(ASP)的一个组件,被广泛应用于Web应用中以实现文件的上传。它简化了在ASP应用程序中处理文件上传的过程。通过AspUpload,开发者可以控制上传过程的每个环节,包括但不限于:限制文件大小、类型、数量,以及提供进度条显示功能和断点续传能力。 阅读详情
 
 
简介
文件上传是将任意的文件从客户机发送到服务器的过程。最简单、最方便的上传方法是使用支持RFC1867的浏览器,如微软的Internet Explorer4.0以上版本,Netscape3.0以上版本,或者带附件的Internet Explorer3.0。基于浏览器的文件上传是通过带有属性ENCTYPE="multipart/form-data"的HTML form实现的。这个form也必须包含一个或多个<INPUT TYPE=FILE>项,以让用户指定要上传的本地文件。 


带有ENCTYPE="multipart/form-data"属性的form所发送的数据必须被一个服务器端过程解析,以展开上传的文件和其他非文件项。在ASP环境中,这种任务用编译好的active server组件能最好的完成,比如Persits软件公司的AspUpload 
(http://www.persits.com)。 

本文所有示例都是建立在你的系统中安装了AspUpload的基础上的。可以在这里下AspUpload
免费评估版http://www.persits.com/aspupload.html。解压文件后,将AspUpload.dll
放在任意目录中,在MS DOS窗口中执行命令 

regsvr32 c:/dir/AspUpload.dll
开始
我们来创建一个简单的能上传3个文件的HTML form,和控制上传的脚本。
这里是第一个HTML文件 
Test1.htm: 
<HTML> 
<BODY BGCOLOR="#FFFFFF"> 

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript1.asp"> 
<INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR> 
<INPUT TYPE=FILE SIZE=60 NAME="FILE2"><BR> 
<INPUT TYPE=FILE SIZE=60 NAME="FILE3"><BR> 
<INPUT TYPE=SUBMIT VALUE="Upload!"> 
</FORM>
</BODY> 
</HTML> 
每个 <INPUT TYPE=FILE> 项在浏览器中显示成为一个带有"Browse..."按钮的文本输入框。如果你没看见Browse按钮,很有可能说明你的浏览器不支持文件上传。 

这里是相应的上传脚本 UploadScript1.asp: 
  <HTML>  
<BODY>  
<%  
Set Upload = Server.CreateObject("Persits.Upload.1")  
Count = Upload.Save("c:/upload") 
%> 
<% = Count %> files uploaded.  
</BODY>  
</HTML> 




ASP脚本的第一行仅仅创建了一个AspUpload对象的实例。第二行调用组件的Save方法,它实际上的作用是:它解析从浏览器发送的东西,计算出有多少个文件正在上传,并且把他们存在服务器上指定的目录。目录名可能以反斜线结束,也可能不是。所有文件将以他们原来的名字存放在目录中。我们很快将看到如何更改任意或者所有文件的名字。 

Save方法返回成功上传的文件数量。万一发生错误,这个方法将抛弃之。 

注意你能够使用我们的form中任意或者全部三个输入框。AspUpload有足够的智慧判断出哪些输入框使用了,哪些没有。 
  

使用FILES和FORMS集合访问单个form项
我们看看第二组示例:

Test2.htm 
<HTML> 
<BODY BGCOLOR="#FFFFFF"> 

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript2.asp"> 
File 1:<INPUT TYPE=FILE NAME="FILE1"> 
Description 1:<INPUT TYPE=TEXT NAME="DESCR1"><BR> 
File 2:<INPUT TYPE=FILE NAME="FILE2"> 
Description 2:<INPUT TYPE=TEXT NAME="DESCR2"><BR> 

<INPUT TYPE=SUBMIT VALUE="Upload!"> 

</FORM> 
</BODY> 
</HTML>
  
UploadScript2.asp <HTML>  
<BODY>  
<%  
Set Upload = Server.CreateObject("Persits.Upload.1")  
Upload.Save "c:/upload" 
%>  
Files:<BR>  
<%  
For Each File in Upload.Files  
Response.Write File.Name & "=" & File.Path & " (" & File.Size & ")<BR>" 
Next 
%>  
<P>  
Other items:<BR>  
<%  
For Each Item in Upload.Form  
Response.Write Item.Name & "=" & Item.Value & "<BR>" 
Next 
%>  
</BODY>  
</HTML> 



注意我们的HTML form现在有两种输入框,TYPE=FILE 和 TYPE=TEXT。因为我们form的ENCTYPE属性,我们不再能通过标准的ASP Response.Form 集合来访问form变量。此处Upload.Form 来解决了问题。这个集合实际上和Response.Form一样,也就是,我们能通过整形或字串型索引访问它的元素。例如: 

Set Item1 = Upload.Form("DESCR1") 

或者 

Set Item1 = Upload.Form(1). 

我们也能够使用上面示例代码显示的For-Each语句遍历集合中的项。Form集合包含FormItem类型的对象,它只有两个字串属性,Name 和 Value (缺省属性). 

记住Upload.Form集合仅仅包含非文件项,也就是不同于<INPUT TYPE=FILE>,这点很重要。AspUpload提供另外一个集合,叫做Files,来包含UploadedFile类型的对象,这种对象代表已经上传的来自<INPUT TYPE=FILE>项的文件。很象Form集合,Files集合的项能够通过使用字串或者整形索引,或者一个For-Each语句访问,象上面的示例显示的一样。 

运行示例2以后,我们将看到象这样的一些东西:

Files: 
FILE1=c:/upload/File1.xls (108544) 
FILE2=c:/upload/File2.zip (211687) 

Other items: 
DESCR1=bla bla 
DESCR2=test test 

注意我们已经通过UploadedFile对象相应的Path和Size属性获得了上传过的文件的目标路径和文件大小。

如果我们的form只包含一个文件输入框,<INPUT TYPE=FILE NAME="ONLYFILE">,那么没有必要使用For-Each语句。我们只需要这么说 

Response.Write Upload.Files("ONLYFILE").Path 

或者,更常用的

Response.Write Upload.Files(1).Path 


要点:Files和Form集合在调用Save方法前都不会装入,因此在调用Upload.Save前就查询这些集合是不正确的。 

'' 错误! 
Upload.Save( Upload.Form("Path") )
限制文件大小
也许你需要限制上传文件的大小,以防止服务器磁盘空间拥塞。你所需要做的一切就是在调用Save之前在你的Upload对象中调用SetMaxSize: 
Set Upload = Server.CreateObject("Persits.Upload.1") 
Upload.SetMaxSize 50000, False 
Upload.Save "c:/upload" 

在这个例子中,我们将上传文件的大小限制在50000字节内。第二个可选参数指定超出文件最大范围的部分是否应该被删除(如果设成false或者不设),或者作为错误例外拒绝接收(如果设成True) 。 

  

强制特有文件名
缺省的,AspUpload将覆盖上传路径中已有的文件。如果你不想这样,可以配置组件,为上传文件产生特有的名字来防止覆盖已有文件。方法是,在调用Save前设置上传管理器的OverwriteFiles属性:

Upload.OverwriteFiles = False 

缺省值是true。 

为防止名字冲突,AspUpload将在原来文件名后面加上用圆括号括起来的整数。例如,如果文件MyFile.txt已经存在于上传目录了,并且另外一个同名文件正在上传,AspUpload会将新文件存为 MyFile(1).txt。如果我们上传更多的MyFile.txt,他们将被存MyFile(2).txt, MyFile(3).txt,等等。 
  

移动、拷贝、删除文件
文件上传对象提供了一些方法供你移动、拷贝或者删除上传的文件。这些方法是 
file.Move( NewName As String ) 
file.Copy( NewLocation As String, Optional Overwrite) 
file.Delete 

根据NewName参数,Move方法将文件移动到其他目录或者给他更名。假设文件abc.txt上传到了目录
c:/Upload。那么调用 

file.Move "c:/WINNT/abc.txt" 将把文件移动到 c:/WINNT, 而调用
file.Move "c:/Upload/xyz.txt" 只会更改文件名。 

要知道Move方法有个副作用是很重要的:当这个方法成功调用后,这个文件对象的Path属性将指向新目录/名字。 

Copy属性把文件拷贝到新目录/名字。新目录必须是完全合法的路径。 Overwrite参数如果设成True或者不设,就会指示Copy方法覆盖新目录里的已有文件。 如果设成False,当文件在新目录中已经存在地时候,会导致方法失败。与Move方法不同,这个方法不会影响Path属性。 

有时你可能选择使用Delete方法,例如你在把文件作为BLOBs存入数据库中,并且不再需要它放在你的上传路径里时。将文件存入数据库是我们下一个要讨论的主题。

  

把文件作为BLOBs存入数据库
许多数据库管理系统象Ms Access或者SQL Server将允许你将任意文件存为"binary large objects"(BLOBs)。一个MS Access表格能够在OLE Object型的数据字段中存放二进制文件。在SQL Server中,相应的数据类型是IMAGE。存放的文件以后能够重新取出供下载,或者用ADO显示。 
AspUpload让你只使用短短一行代码就能把上传文件存入数据库!让我们看看第三组示例文件。文件 Test3.htm几乎和Test1.htm相同,因此我们不再把它显示在这里。文件UploadScript4.asp 很值得我们注意: 
  
  <HTML>  
<BODY>  
<%  
Set Upload = Server.CreateObject("Persits.Upload.1")  
Upload.Save "c:/upload"  
On Error Resume Next  
For Each File in Upload.Files  

File.ToDatabase "DSN=data;UID=sa;PWD=xxx;", "insert into Blobs(id, Path, BigBlob) values(12, ''" & File.Path & "'', ?)" 
if Err <> 0 Then  
Response.Write "Error saving the file: " & Err.Description 
Else  
File.Delete  
Response.Write "Success!" 
End If 

Next 
%>  
</BODY>  
</HTML> 



这一行 

On Error Resume Next 

指示asp当以外发生时,不要显示错误信息,只将意外代码和描述存放到内建的Err对象,并且继续脚本的执行。 

下一行 

File.ToDatabase "DSN=data;UID=sa;PWD=xxx;", "insert into Blobs(id, Path, BigBlob) values(12, ''" & File.Path & "'', ?)" 

是将文件存放入数据库所采用的一切。我们来检查一下这个方法的两个参数:

第一个参数是下列格式的ODBC连接字串: 

"DSN=datasource;UID=userid;PWD=password;<other optional parameters>" 

第二个参数是SQL INSERT或者UPDATE语句,带有一个问号(?),并且只能带一个。它的作用是为要存储的文件提供空间容器。在这个例子中,我们下部的数据库表Blobs包含三栏:一个Integer ID,一个VARCHAR Path,和一个IMAGE BigBlob。这个SQL INSERT语句将12放入ID栏,文件路径放入Path栏,真实文件放入BigBlob栏。 

下一行检查语句在成功执行前是否正确。如果成功,Err对象取值0并且删除文件
(File.Delete行),因为文件已经存入数据库,不需要再放在上传路径中了。否则,Err包含一个数字错误代码,并且Err.Description包含对于意外的语言描述。


将GIF和JPEG图象存入数据库很常见。将图象从数据库中取出并显示在HTML页中,你不需要使用任何第三方组件。ADO就能完成任务。 

在你的HTML页面中放入普通<IMG>标签,将SRC属性指向一个ASP脚本,例如 

<IMG SRC="GetImage.asp?id=4"> 

GetImage.asp 脚本看起来可能会是这样 

<% 
Set db = Server.CreateObject("ADODB.Connection") 
db.Open "data" 
Set rs =db.Execute("SELECT BigBlob FROM Blobs where id = " & Request("id") ) 
Response.ContentType = "image/jpeg" ''(or "image/gif") 
Response.BinaryWrite rs("BigBlob") 
%> 


--------------------------------------------------------------------------------
哪里能得到更多关于AspUpload的信息
要得到完整的AspUpload文档,并下载免费评估版本,请访问Persists软件公司的web站点 
http://www.persits.com/aspupload.html。这个组件的注册费用是$99.00(单CPU协议)。
常问到的问题
问:  AspUpload能在所有ASP版本上工作吗? 
答:  不.早期版本ASP的Request对象不提供BinaryRead或者TotalBytes方法,而本组件对这两个方法依赖很大。检验你的ASP版本是否允许上传的最好方法是执行象<% n = Request.TotalBytes %>这样一句简单的脚本,看你的ASP模块能否识别。

问:  哪里能获得最新版本的ASP? 
答:这取决于你的web服务器的版本。如果你使用PWS或者IIS3.0,你可以到
http://www.microsoft.com/office/intranet/modules/asp411s3.asp下载最新版本。如果你使用IIS4.0你可以从http://www.microsoft.com/iis下载并安装Option Pack 4。 

问: 微软Internet Explorer 3.0支持文件上传吗? 
答:  缺省的,是不支持。但是有一个IE3的附件可以用,从此下载 http://www.microsoft.com/msdownload/iebuild/ie3add_win32/en/ie3add_win32.htm. 
http://www.yinimei.com/blog/document_detail.asp?id=40
 
 
AspUpload组件的文件上传实践教程 AspUpload组件是一个专门用于ASP(Active Server Pages)环境下的文件上传解决方案。它由著名的软件开发公司VbsEdit所开发,旨在简化Web应用中的文件上传过程,提升用户体验。该组件被广泛应用于在线论坛、文件托管网站、内容管理系统等多种互联网服务中。VbsEdit公司成立于1999年,是一家专注于Active Server Pages和VBScript编辑器开发的软件公司。 阅读详情

相关推荐

ASPUpload组件详解与实战应用

ASPUpload虽老,却不该被轻视。它代表了一种务实、稳定、面向生产的工程哲学。在这个追求“新即是好”的时代,我们反而更需要这样沉得住气的技术方案。从多文件处理到性能调优,从安全过滤到进度追踪,每一个环节都在告诉我们:真正的健壮系统,从来不是靠炫技堆出来的,而是靠扎实的设计、严谨的验证和持续的打磨一点点垒起来的。也许有一天我们会彻底告别ASP,但那份对细节的关注、对边界的敬畏、对用户体验的执着,值得每一位开发者铭记于心 ❤️。毕竟,技术会过时,但解决问题的思维永远不会。

weixin_29885875的博客 1041

组件上传之AspUpload使用方法

其实,大家知道Asp已经是日落西山了,.net正在取代。但是目前还有不少公司的网站是基于Asp的,例如我们公司。这次要做一个基于视频上传播放的项目,类似于优酷吧,只是小规模的,涉及到的东西包括视频的上传,视频格式转换,流媒体服务器的搭建,视频的播放下载等。 所以,首先要说视频的上传这一块,因为我是在实习,之前也没有接触过Asp,当然之所以敢作是因为学过Jsp,就是想移花接木一下。但是发现...

duoerbasilu 527

AspUpload 组件上传 安装方法及其Demo(全)

NULL 博文链接:https://ayduaichao.iteye.com/blog/793332

ASPUPLOAD组件实现文件上传完整代码示例与应用详解

或许你会说:“都2025年了,谁还用ASP?但现实是,全球仍有大量金融、政务、制造企业的核心系统运行在IIS+ASP架构之上。它们稳定、高效、低延迟,尤其是在局域网环境中表现优异。ASPUPLOAD 这类组件的存在,正是为了让这些“老兵”继续发光发热。更重要的是,它的设计理念——流式处理、资源隔离、权限最小化、多层校验——放到今天依然不过时。无论是Node.js的busboy,Python的,还是Go的,底层思想一脉相承。

764

aspupload例子,用aspupload组件上传文件的例子

aspupload上传文件的例子, 一次上传多个文件,和获取表单的文本数据 自定义保存路径,自定义上传大小限制,上传格式限制!

Persits.Upload(AspUpload上传组件)

Persits.Upload(AspUpload上传组件)

ASPUpload文件上传组件的用法

upload.htm文件上传演示           upload.aspset upload = server.createobject("persits.upload")count = upload.save(server.mappath("/"))response.write(count & " 文件已上传到 " & server.mappath("/"))%>  更详细的应用案例,

2441

AspUPload组件

asp WEB服务器上传组件, IIS服务器基本都用得上!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ASP中文件上传组件ASPUpload介绍和使用方法

[导读]要实现该功能,就要利用一些特制的文件上传组件。文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload 要实现该功能,就要利用一些特制的文件上传组件。文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件,它的下载网址是: http://www.persits.com/aspupload.ex...

weixin_30915951的博客 425

视频教程-Ps教程之神奇的Photoshop自动化技术-Photoshop

Ps教程之神奇的Photoshop自动化技术 10年以上IT行业工作经验、三...

weixin_28812857的博客 1474

Keil MDK v6迁移指南:从AC5到AC6的编译器升级与工程适配

编译器是嵌入式开发的底层基石,决定了代码的执行效率与工程的可维护性。随着ARM工具链向LLVM/Clang架构演进,Arm Compiler 6(AC6)正逐步取代经典的AC5,成为Keil MDK的核心编译引擎。AC6在C11标准支持、代码优化、诊断信息及LTO链接优化上全面超越AC5,但迁移过程中往往伴随内联汇编重写、类型检查严格化、库兼容性等问题。理解编译器差异、掌握CMSIS-Toolbox的工程描述机制,能帮助嵌入式工程师在Cortex-M系列项目中平滑过渡。本文结合Cortex-M4量产工程实战

weixin_29189363的博客 237

ASPupload 64位下载介绍:强大的文件上传组件,适用于Windows 2008系统

ASPupload 64位下载介绍:强大的文件上传组件,适用于Windows 2008系统 【下载地址】ASPupload64位下载介绍 ASPupload 64位版本专为Windows 2008系统优化,提供高效稳定的文件上传功能。支持多种脚本语言,帮助开发者在Web应用中轻松实现文件上传。此版本包含注册码,确保在64...

gitblog_06701的博客 379

【图像压缩】超先验模型 《VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR》

绪论 2015年,第一个端到端图像编码方案被提出。基于深度学习的端到端图像压缩主要分为两类,一类是基于RNN的方法,一类是基于CNN的方法。本文对基于CNN的方法

hahalidaxin的专栏 1万+

asp 文件上传(ASPUpload组件上传)

要实现该功能,就要利用一些特制的文件上传组件。文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload   要实现该功能,就要利用一些特制的文件上传组件。文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件,它的下载网址是:            http://www.persits.com/aspupload.exe...

weixin_34007879的博客 1141

新卡尝鲜记:RTX 5070Ti适配PyTorch生态的实战避坑指南

本文分享了RTX 5070Ti适配PyTorch生态的实战经验。针对CUDA 12.8兼容性问题,详细介绍了安装PyTorch Nightly版本、手动编译xformers库以及寻找PyTorch3D第三方预编译包的完整流程与解决方案,帮助用户快速搭建可用的深度学习开发环境。

weixin_29094775的博客 288

UniApp实战:5分钟搞定后台持续定位与轨迹实时更新(附完整代码)

本文详细介绍了在UniApp中实现后台持续定位与动态轨迹地图系统的完整方案。针对物流配送、运动健身等场景,文章深入讲解了权限申请、坐标系选择、定位防抖优化、地图轨迹线(polyline)实时绘制等核心步骤,并提供了可复用的完整代码,帮助开发者高效解决App切后台定位停止、轨迹漂移等常见难题。

weixin_29266679的博客 483

asp html css样式,aspupload

艾恩ASP无组件上传类AienAspUpload v13.12.09怎样用艾恩ASP无组件上传 v13.12.09在文本框可以获取到文件名称等信息看了很题主问的好,我也想知道,结果搜了半天,还真没有,我也很菜,所以采用了笨办法不断去试。后来通过5个小时不断实验,成功了,很有成就感。ASP不会的问题,到网上来找到答案的时候,总是很开心,特别是自己有想法的时候,实验通过更开心。如何使用AspUploa...

weixin_42378374的博客 357

Dify+MCP Server打造禅道AI智能助手

Dify AI与MCP Server结合打造的禅道AI智能助手,实现了项目管理智能化升级。该方案通过大语言模型和自动化工作流,提供四大核心功能:1)自动化报表生成,支持多维度数据统计与可视化;2)禅道系统管理操作,简化产品/项目/任务管理流程;3)基于知识库的智能问答系统;4)数据库灵活查询与可视化输出。系统采用分层架构,通过MCP协议实现AI与数据源解耦,解决了传统禅道在数据孤岛、工具碎片化等问题。实际应用验证了其在用户管理、任务创建、Bug处理等场景的高效性,显著提升了项目管理效率。

oNew_Lifeo的博客 1708

宿迁华为云代理商:aspupload

华为云是华为公司推出的一站式云服务平台,为个人和企业提供全面的云计算解决方案。作为宿迁的华为云代理商,aspupload 提供了丰富的云服务器产品,帮助客户实现高效的云计算和存储。作为宿迁的华为云代理商,aspupload 提供了丰富的云服务器产品,结合了华为云服务器的优势。华为云服务器具有弹性扩展、高可靠性、强大性能和安全防护等特点,在与aspupload 结合后可以实现高速上传、安全存储和弹性扩展。这些优势使得aspupload 成为宿迁地区用户进行文件上传的首选解决方案。

aliyuncloud的博客 536

【ESP32设备通信】-两个ESP32间UART通信

在本文中,我们将使用 Arduino IDE 的 UART 硬件库在两个 ESP32 板之间执行 UART 或串行通信。 要使用 USB 端口调试和编程 ESP32,需要使用称为通用异步接收器/发送器 (UART) 通信的串行端口。 对于大多数传感器和系统,主要的通信方法被认为是 UART。 为了共享工作负载、信息和执行不同的任务,有时需要在两个 ESP32 开发板之间进行通信。

视觉与物联智能 2995

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 整理MSDN中的SqlConnection.ConnectionString 属性
下一篇: 无组件生成缩略图程序
qq_13854514
博客等级 码龄20年 29粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值