利用SA FileUp组件进行多文件上传

大家可以根据自己的实际情况进行修改,特别是数据库操作部分。

============================================

利用稻香老农的无组件进行多文件上传

请见:

http://bbs.blueidea.com/viewthread.php?tid=1249535

==================================================

本例属于文件和表单项的混合提交。

简单说明:

虽然重点在处理页上,但我觉得有必要介绍一下表单的项目。

本例是相册里像片的上传。

其中的groupID是隐藏域传递的大类的ID

其中的albumID是隐藏域传递的小类的ID

file1-->>file5是文件

photoTitle1-->>photoTitle5 是像片的标题

photoIntro1-->>photoIntro5 是像片的简介

photoWidth1-->>photoWidth5 是像片的宽度

photoHeight1-->>photoHeigth5 是像片的高度

photoSize1-->>photoSize5 是像片的大小。

注意:因本人没有声明变量的习惯,所以大家要是强制声明变量的话,就得自己加了。

===========================================

提交页:主要代码如下

<form name="fileForm" method="post" action="photo_savephoto.asp" enctype="multipart/form-data" onSubmit="return checkForm();">

<INPUT name="groupID" type="hidden" id="groupID" value="<%=groupID%>" size="10">

<INPUT name="albumID" type="hidden" id="albumID" value="<%=albumID%>" size="10">

上传说明:最多可以同时上传五个文件,其中标题最多30字,简介200字。

<table width="96%" align="center" cellpadding="4" cellspacing="2">

    <tr align="center" valign="middle">

      <td align="left" bgcolor="#F4CECE" id="upid">文件1</td>

      <td height="29" align="left" bgcolor="#F4CECE" id="upid">            <INPUT name="file1" type="file" class="myInput" size="20">

        宽: <INPUT name="photoWidth1" type="text" class="input-disabled" id="photoWidth1" size="5" readonly="">

          高: <INPUT name="photoHeight1" type="text" class="input-disabled" id="photoHeight1" size="5" readonly="">

          大小:<INPUT name="fileSize1" type="text" class="input-disabled" id="fileSize1" size="5" readonly="">         

      </td>

    </tr>

    <tr align="center" valign="middle">

      <td colspan="2" align="left" bgcolor="#FDF2F2" id="upid">

        标题: <INPUT name="photoTitle1" type="text" class="myInput" id="photoTitle1" size="40">

          <BR>        

        简介:<TEXTAREA name="photoIntro1" cols="60" rows="5" class="myInput" id="photoIntro1"></TEXTAREA>

      </td>

      </tr>

。。。。。。。

<tr align="center" valign="middle" bgcolor="#F4CECE">

      <td height="24" colspan="2">

        <input name="Submit" type="submit" class="myButton" value="开始上传">

        <input name="Submit2" type="reset" class="myButton" value="重新填写">

      </td>

      </tr>

  </table>

</form>

下面的script是我用来检查图片属性的。其中检查了图片的宽度,高度,大小,是否是图片。

<SCRIPT language="JavaScript">

<!--

       var upFileSize=<%=upFileSize%>;

//-->

</SCRIPT>

<SCRIPT language="JavaScript" src="photo_addphoto.js"></SCRIPT>

<TABLE width="98%"  border="0" cellpadding="0" cellspacing="0" style="table-layout:fixed;">

  <TR>

    <TD height="1"><img src="images/add.gif" id="loadPhoto" onload="if(!firstLoad)showInfo();"></TD>

  </TR>

</TABLE>

photo_addphoto.js

var firstLoad=true; var mycount; function checkForm() { var filePath; var fileNumber=0; //想上传的文件个数 for(mycount=1;mycount<=5;mycount++) if(eval("fileForm.file"+mycount+".value!=''")) //检查文件后缀、标题和简介 { eval("filePath=fileForm.file"+mycount+".value;") if(isPic(filePath,mycount)==false) return false; if(eval("fileForm.photoTitle"+mycount+".value==''") || eval("fileForm.photoTitle"+mycount+".value.length>30")) { alert("第"+mycount+"个相片的标题为空或超过30字!"); return false; } if(eval("fileForm.photoIntro"+mycount+".value==''") || eval("fileForm.photoIntro"+mycount+".value.length>200")) { alert("第"+mycount+"个相片的简介为空或超过200字!"); return false; } fileNumber++; } if(fileNumber==0) { alert("你没有选择任何一个图片文件!不能提交!"); return false; } return photoInfo(); //检查图片属性,提交表单 } function photoInfo() { //fileForm.submit.disabled=true; mycount=0; photoInfo2(); //共执行5次photoInfo2() for(var i=1;i<=4;i++) { setTimeout("photoInfo2()",i*500); } setTimeout("checkFileSize()",3000); return false; } function photoInfo2() { firstLoad=false; mycount++; if(eval("fileForm.file"+mycount+".value!=''")) eval("loadPhoto.src=fileForm.file"+mycount+".value;"); else eval("fileForm.fileSize"+mycount+".value='no';"); } function showInfo() { eval("fileForm.photoWidth"+mycount+".value=loadPhoto.offsetWidth;"); eval("fileForm.photoHeight"+mycount+".value=loadPhoto.offsetHeight;"); eval("fileForm.fileSize"+mycount+".value=loadPhoto.fileSize;"); } function isPic(filePath,mycount){ var temp; var ExtList = ".jpg.gif.bmp.png"; var the_ext = filePath.substr(filePath.lastIndexOf(".")+1).toLowerCase(); if (ExtList.indexOf(the_ext)==-1){ alert("第"+mycount+"个文件不是图片,请选择图片文件!"); return false; } return true; } function checkFileSize() { for(mycount=1;mycount<=5;mycount++) if(eval("fileForm.fileSize"+mycount+".value")>upFileSize) //upFileSize 来自于photo_addphoto.asp { alert("第"+mycount+"个文件大于"+Math.round(upFileSize/1024)+" KB!"); return false; } fileForm.Submit.disabled=true; fileForm.submit(); //提交表单 }

 提示:您可以先修改部分代码再运行===============

这里只写出了一个文件的相关输入框,其他四个类似。

说明一点,并不是有5 个的限制,只是我这里只写了5个。

其中的photo_addphoto.js在客户端对图片进行一遍检查,不是图片的会提示,大小超过限制的也会提示。

这样就避免了用户经过耐心的等待后才被告诉不合标准的烦恼。

=================================================

处理页代码:

<%@ CODEPAGE="936"%>

<%

Server.ScriptTimeOut=5000 '--脚本超时设置为5000

%>

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

<%

Set oFileUp = Server.CreateObject("SoftArtisans.FileUp") '--建立SA FileUp Object

'oFileUp.Path = Server.MapPath("/upfile/") '--我这里要自己定义文件名,所以没有使用Path属性,注意这句被注释掉了。

strRestrictBy = ""  '--文件验证方式,分为extension和ContentType

iCount=0  '--文件上传数的计数变量

formPath="upfile/"    '文件保存位置

'-----------检查是否有在此位置上传的权限-----------这里省略了。

groupID=trim(oFileUp.form("groupID"))

albumID=trim(oFileUp.form("albumID"))

'-----------检查权限完成------

if errMsg="" then   '----如果到此还没有错误

For Each strFormElement In oFileUp.Form

       If IsObject(oFileUp.Form(strFormElement)) Then  '如果是文件

              If Not oFileUp.Form(strFormElement).IsEmpty Then  '--文件不为空

                     flagOK=1

                     '--不是文件或文件大于限制,设置错误信息

                     If oFileUp.Form(strFormElement).TotalBytes<100  Then

                            flagOK=0

                     ElseIf oFileUp.Form(strFormElement).TotalBytes> upFileSize Then

                            flagOK=0

                            errMsg=errMsg+"文件:"&oFileUp.Form(strFormElement).UserFileName&" 大于"&upFileSize\1024&"KB!<br>"

                     Else

                            strShortFileName = mid(oFileUp.Form(strFormElement).UserFileName,InStrRev(oFileUp.Form(strFormElement).UserFileName, "\")+1)  '取得文件名

                            strExtension = Mid(strShortFileName, InStrRev(strShortFileName, "."))  '取得扩展名

                            If strRestrictBy = "extension" Then  '--验证方式为扩展名

                                   'strShortFileName = oFileUp.Form(strFormElement).ShortFileName

                                   '======检查后缀名====

                                   Select Case LCase(strExtension)

                                          Case ".jpg", ".gif", ".bmp",".png"

Case Else

                                                 flagOK=0

                                                 oFileUp.Form(strFormElement).Delete

                                                 Response.Write("<B>错误:</B> 扩展名为 <I>" & strExtension & "</I> 的文件不能被上传。<BR>")

                                   End Select

                            Else '--验证方式为MIME类型

                                   strContentType = oFileUp.Form(strFormElement).ContentType

                                   Select Case LCase(strContentType)

                                          Case "image/gif", "image/jpeg", "image/pjpeg"

                                          Case Else

                                                 flagOK=0

                                                 oFileUp.Form(strFormElement).Delete

                                                 Response.Write("<B>错误:</B> MIME类型为 <I>" & strContentType & "</I> 的文件不能被上传。<BR>")

                                   End Select

                            End If '--end if 验证方式

                     End If 'end if 文件大小判断

If flagOK=1 Then  '如果文件通过检查,保存文件,并插入数据库纪录

                                          randomize

                                          ranNum=int(900*rnd)+100

                                          filename=year(now())&month(now())&day(now())&hour(now())&minute(now())&second(now())&ranNum&LCase(strExtension)

                                          oFileUp.Form(strFormElement).SaveInVirtual formPath&filename  '让文件名不重复,保存文件,这里用的是SaveInVirtual方法

'--输出服务器上的文件路径

                                          Response.Write oFileUp.Form(strFormElement).ServerName & ":ServerName<BR>"

'--输出客户端的文件路径

                                          Response.Write "<BR><B>文件:</B>"&oFileUp.Form(strFormElement).UserFileName & "<BR>"

'--输出该文件的大小

                                          Response.Write "<B>大小:</B>"&oFileUp.Form(strFormElement).TotalBytes & "<BR>"

                                          '===添加文件的信息到数据库里===

                                          myIndex=right(strFormElement,1) '--取得文件的序号,如file1则取得为1,file2取得为2

                                          temp_photoTitle=oFileUp.form("photoTitle"+myIndex) '--这四行取得对应的标题,简介,宽度,高度

                                          temp_photoIntro=oFileUp.form("photoIntro"+myIndex)

                                          temp_photoWidth=oFileUp.form("photoWidth"+myIndex)

                                          temp_photoHeight=oFileUp.form("photoHeight"+myIndex)

                                          '====检查输入,为空则给初值==

                                          temp_photoTitle=replace(trim(temp_photoTitle),"'","''")

                                          if temp_photoTitle="" then

                                                 temp_photoTitle="没有填写"

                                          end if

                                          temp_photoIntro=replace(trim(temp_photoIntro),"'","''")

                                          if temp_photoIntro="" then

                                                 temp_photoIntro="没有填写"

                                          end if

                                          if temp_photoWidth="" or not IsNumeric(temp_photoWidth) then

                                                 temp_photoWidth=160

                                          end if

                                          if temp_photoHeight="" or not IsNumeric(temp_photoHeight) then

                                                 temp_photoHeight=120

                                          end if

                                          '===插入数据库===

                                          FileSize=oFileUp.Form(strFormElement).TotalBytes

                                          sql="insert into TBL_PHOTO(albumID,groupID,userName,addTime,photoFilename,photoTitle,photoIntro,photoClick,photoSize,photoWidth,photoHeight,locked,viewPassword) values("&albumID&","&groupID&",'"&session("userName")&"','"&Now()&"','"&filename&"','"&temp_photoTitle&"','"&temp_photoIntro&"',1,"&FileSize&","&temp_photoWidth&","&temp_photoHeight&",'no','')"

                                          conn.execute sql

                                          sql="update TBL_ALBUM set photoCount=photoCount+1 where albumID="&albumID

                                          conn.execute sql

                                          sql="update TBL_GROUP set photoCount=photoCount+1 where groupID="&groupID

                                          conn.execute sql              

                                          '===输出上传成功信息===

                                          iCount=iCount+1

                     End If

Else

                     Response.Write strFormElement & "对象为空!"

              End If '--end if 对象为空

       End If '--end if 是否是文件

Next

Set oFileUp = Nothing  '删除此对象

end if '--end if 没有错误信息

response.write "<br>"&iCount&" 个文件上传结束!"

response.write "<br><a href='photo_listphoto.asp?albumID="&albumID&"'><B>返回相册</B></a>"

'=====如果有错,输出错误信息=====       

if errMsg<>"" then

       response.write "<br>"&errMsg

       response.write "<INPUT type='button' onClick='history.go(-1)' value='返回' class='myInput'>"

end if

conn.close

set conn=nothing

%>

===================================================

看完了实例,下面对SA FileUP的属性和方法进行简单的介绍,免得大家初次接触感到发晕。

这些是我觉得比较常用的,例句和注释都是按我的理解写的。

如果大家在应用中发现有什么问题,请指出。谢谢。

建立SA FileUp 对象的方法:

Set oFileUp = Server.CreateObject("SoftArtisans.FileUp")

取出表单所有项的方法:

For Each strFormElement In oFileUp.Form

       用 oFileUp.Form(strFormElement)就可以引用每个对象,文件也是这样

       注意:如果是多选下拉框,则用oFileUp.FormEx(strFormElement)

       可以这样来遍历它。

       For Each strSubItem In oFileUp.FormEx(strFormElement)

              Response.Write( strSubItem & "<BR>")

       Next

Next

ContentType属性:

oFileUp.Form(strFormElement).ContentType

可以得到文件的MIME类型

IsEmpty属性

oFileUp.Form(strFormElement).IsEmpty

可以知道用户是不是指定了一个无效的文件

MaxBytes属性

oFileUp.Form(strFormElement).MaxBytes=30000

指定文件的限制,单位为Byte,如果超过它,那么只存储MaxBytes指定的大小。其余舍弃。

ServerName属性

oFileUp.Form(strFormElement).ServerName

可以得到文件保存到服务器的完整路径。

ShortFilename属性

oFileUp.Form(strFormElement).ShortFilename

可以得到客户端的文件名,注意只是文件名,我这里没有用,因为报错。呵呵。

UserFilename属性

oFileUp.Form(strFormElement).UserFileName

可以得到客户端文件的完整路径。可以输出一下给用户看看。

TotalBytes属性

oFileUp.Form(strFormElement).TotalBytes

可以得到文件的大小,单位为Byte

SaveInVirtual(路径)方法

oFileUp.Form(strFormElement).SaveInVirtual "upfile/"

oFileUp.Form(strFormElement).SaveInVirtual "upfile/aa.abc"

如果只指定了路径,则保留原文件名,否则按指定指定文件名保存

服务器管理员可以禁止掉其他所有方法,但这个一定会留的。

SaveAs (文件名)方法

oFileUp.Form(strFormElement).SaveAs "C:\aa\a.tmp"

如果没有指定路径,只是指定了文件名,那么将用Path属性指定的路径。

Path属性一会介绍。

Save方法

oFileUp.Path="D:\wwwroot\abc\upfile\"

注意必须是真实路径,可以用Server.MapPath来转换虚拟路径。

oFileUp.Form(strFormElement).Save

不能指定文件名喽。

注意:Path属性必须在提到任何表单项之前,建议放在

Set oFileUp = Server.CreateObject("SoftArtisans.FileUp")

的后面。前提是你用的话。

Delete (文件名,可选)

oFileUp.Form(strFormElement).Delete

从服务器上删除文件,如果不指定文件名,则删除当前的文件。

如果指定的话,必须是文件的完整路径。

Flush方法

oFileUp.Flush

当你不想保存任何东西的时候,可以用它来放弃全部的输入流。

时间: 2024-10-31 14:17:18

利用SA FileUp组件进行多文件上传的相关文章

利用SA FileUp组件进行多文件上传_ASP基础

大家可以根据自己的实际情况进行修改,特别是数据库操作部分.============================================利用稻香老农的无组件进行多文件上传 请见:http://bbs.blueidea.com/viewthread.php?tid=1249535==================================================本例属于文件和表单项的混合提交. 简单说明:虽然重点在处理页上,但我觉得有必要介绍一下表单的项目.本例是相册里像

JS组件系列——Bootstrap文件上传组件:bootstrap fileinput

JS组件系列--Bootstrap文件上传组件:bootstrap fileinput 前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签,效果不忍直视,于是博主下定决心要找一个好看的上传组件换掉它.既然bootstrap开源,那么社区肯定有很多关于它的组件,肯定也有这种常见的上传组件吧.经过一番查找,功夫不负有心人,还是被博主找到了这个组件:boo

利用label标签和CSS美化文件上传表单

文件上传类型表单<input type="file" />是一个让很多前端开发者纠结过的表单类型,因为它是一个无法单纯用CSS给它定义兼容的样式.上周的工作中有个批量上传图片的页面,又遇到了这个问题,于是,今天把我的解决方案奉献给大家:利用label标签与CSS共同打造一个样式可控的并兼容IE6之外主流浏览器的上传表单. 实现思路通俗易懂: 首先,我们要新增一个与file相册大小的button按钮,然后利用label为初始的file类型表单定义标注(关于label的解释与用

JavaEE组件commons-fileupload实现文件上传、下载_java

一.文件上传概述 实现Web开发中的文件上传功能,需要两步操作: 1.在Web页面中添加上传输入项 <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="filename1"/><br> <input type="file" n

Plupload上传组件 + java实现文件上传例子

为了兼容IE8浏览器,改用plupload:支持多文件上传和上传进度:之前程序的后台也不用修改.插件下载地址:http://www.plupload.com/download/ Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件. 由于可以实现把文件分块上传,所以可以满足在某些限制了上传大小的环境上传大文件的需求.  代码如下 复制代码 var uploader = new plupload.Uploader({ runti

java组件commons-fileupload实现文件上传_java

一.所需要的包:1.commons-fileupload-1.2.1.jar: 下载地址 http://commons.apache.org/downloads/download_fileupload.cgi 2.commons-io-1.4.jar: 下载地址 http://commons.apache.org/downloads/download_io.cgi 二.注意事项:form表单里面要加上enctype="multipart/form-data"  三.代码示例  1.js

JSP组件commons-fileupload实现文件上传_JSP编程

本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1.准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到"\WEB-INF\lib"目录下 2.首先是Servlet:FileUpload.java package servlet; import java.io.File; import java.io.IOException; import java.io.PrintWr

利用ssh实现服务器文件上传下载_java

通过ssh实现服务器文件上传下载 写在前面的话 之前记录过一篇使用apache的FTP开源组件实现服务器文件上传下载的方法,但是后来发现在删除的时候会有些权限问题,导致无法删除服务器上的文件.虽然在Windows上使用FileZilla Server设置读写权限后没问题,但是在服务器端还是有些不好用. 因为自己需要实现资源管理功能,除了单文件的FastDFS存储之外,一些特定资源的存储还是打算暂时存放服务器上,项目组同事说后面不会专门在服务器上开FTP服务,于是改成了sftp方式进行操作. 这个

java组件fileupload文件上传demo_java

在我们的web开发中,很多的时候都需要把本机的一些文件上传到web服务器上面去. 如:一个BBS系统,当用户使用这是系统的时候,能把本机的一些图片,文档上传到服务器上面去.然后其他用户可以去下载这些文件,那么这样的话,我们可以自己编程实现文件的上传,但是更好的方式是使用一些已有的组件帮助我们实现这种上传功能. 常用的上传组件: Apache 的 Commons FileUpload JavaZoom的UploadBean jspSmartUpload FileUpload下载地址: http:/