彻底解决asp.net多附件上传

None.gif
None.gif现将源码公布
None.gif
None.gifaspx页面代码:
None.gif
None.gif
< %@ Page Language = " vb "  AutoEventWireup = " false "  Codebehind = " Upload.aspx.vb "   Inherits = " Test.Upload " % >
None.gif
< !DOCTYPE HTML  PUBLIC   " -//W3C//DTD HTML 4.0 Transitional//EN " >
None.gif
< HTML >
None.gif        
< HEAD >
None.gif                
< title > Upload </ title >
None.gif                
< meta name = " GENERATOR "  content = " Microsoft Visual Studio .NET 7.0 " >
None.gif                
< meta name = " CODE_LANGUAGE "  content = " Visual Basic 7.0 " >
None.gif                
< meta name = " vs_defaultClientScript "  content = " JavaScript " >
None.gif                
< meta name = " vs_targetSchema "  content = " http://schemas.microsoft.com/intellisense/ie5 " >
None.gif                
< script language = " javascript " >
ExpandedBlockStart.gifContractedBlock.gif                        
Function addFiles() function addFiles(oContainer)
InBlock.gif                        {
InBlock.gif                                var sLineHTML
="<div><input type='file' name='files' style='width:228'><input type='button' οnclick='javascript:delFileInput(this)' value='删除'></div>";
InBlock.gif                                oContainer.insertAdjacentHTML(
'beforeEnd',sLineHTML);
InBlock.gif
                        }
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
Function delFileInput()function delFileInput(oInputButton) 
InBlock.gif                        {
InBlock.gif                                var divToDel
=oInputButton.parentNode;
InBlock.gif                                divToDel.parentNode.removeChild(divToDel);
InBlock.gif                        }
InBlock.gif                
</script>
InBlock.gif        
</HEAD>
InBlock.gif        
<body MS_POSITIONING="GridLayout">
InBlock.gif                
<form id="Form1" method="post" runat="server" encType="multipart/form-data">
InBlock.gif                        
<table align="center">
InBlock.gif                                
<tr>
InBlock.gif                                        
<td align="middle"><h1>多附件上传 作者:Bt之家 cjlwxy</h1>
InBlock.gif                                        
</td>
InBlock.gif                                
</tr>
InBlock.gif                                
<tr>
InBlock.gif                                        
<td id="TD">
InBlock.gif                                                
<INPUT style="WIDTH: 300px" type="file" name="Files">    <BUTTON style="WIDTH: 79px; HEIGHT: 20px" onclick="javascript:addFiles(TD);" type="button">继续添加</BUTTON>
InBlock.gif                                        
</td>
InBlock.gif                                
</tr>
InBlock.gif                                
<tr>
InBlock.gif                                        
<td>
InBlock.gif                                                
<asp:Label ID="lblError" Runat="server"></asp:Label>
InBlock.gif                                        
</td>
InBlock.gif                                
</tr>
InBlock.gif                                
<tr>
InBlock.gif                                        
<td align="middle">
InBlock.gif                                                
<asp:Button ID="btnUpLoad" Runat="server" Text=" 上 传 " EnableViewState="False" CausesValidation="true"></asp:Button>
InBlock.gif                                        
</td>
InBlock.gif                                
</tr>
InBlock.gif                        
</table>
InBlock.gif                
</form>
InBlock.gif        
</body>
InBlock.gif
</HTML>
InBlock.gif
InBlock.gifaspx.vb代码:
InBlock.gif
InBlock.gif
Imports System.IO
ExpandedSubBlockStart.gifContractedSubBlock.gif
Public Class UploadClass Upload
InBlock.gif    
Inherits System.Web.UI.Page
InBlock.gif    
Protected WithEvents lblError As System.Web.UI.WebControls.Label
InBlock.gif    
Protected WithEvents btnUpLoad As System.Web.UI.WebControls.Button
InBlock.gif
ContractedSubBlock.gifExpandedSubBlockStart.gif
Web 窗体设计器生成的代码#Region " Web 窗体设计器生成的代码 "
InBlock.gif
InBlock.gif    
'该调用是 Web 窗体设计器所必需的。
ExpandedSubBlockStart.gifContractedSubBlock.gif
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()Sub InitializeComponent()
InBlock.gif
ExpandedSubBlockEnd.gif    
End Sub

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub Page_Init()Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
InBlock.gif        
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
InBlock.gif
        '不要使用代码编辑器修改它。
InBlock.gif
        InitializeComponent()
ExpandedSubBlockEnd.gif    
End Sub

InBlock.gif
ExpandedSubBlockEnd.gif
#End Region

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InBlock.gif        
'在此处放置初始化页的用户代码
ExpandedSubBlockEnd.gif
    End Sub

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub btnUpLoad_Click()Sub btnUpLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpLoad.Click
InBlock.gif        
Dim sFilesName As String
InBlock.gif        
Dim oPostedFile As HttpPostedFile
InBlock.gif        
Dim n As Integer
InBlock.gif        
Dim i As Integer
InBlock.gif        n 
= Request.Files.Count()
InBlock.gif        
For i = 0 To n - 1
InBlock.gif            oPostedFile 
= Request.Files.Item(i)
InBlock.gif            sFilesName 
= UpLoadMoreFile(oPostedFile, "TestDic")
InBlock.gif            
Select Case sFilesName
InBlock.gif                
Case ""
InBlock.gif                
Case "InValid"
InBlock.gif                    lblError.Text 
= lblError.Text + "<font color='red'>文件</font>: " & oPostedFile.FileName & "<font color='red'>  不合法!</font><br>"
InBlock.gif                
Case "Failure"
InBlock.gif                    lblError.Text 
= lblError.Text + "<font color='red'>文件</font>: " & oPostedFile.FileName & "<font color='red'>  上传失败!</font><br>"
InBlock.gif                
Case Else
InBlock.gif                    lblError.Text 
= lblError.Text + "<font color='red'>文件</font>: " & oPostedFile.FileName & "<font color='red'>  上传成功!</font><br>"
InBlock.gif            
End Select
InBlock.gif        
Next i
ExpandedSubBlockEnd.gif    
End Sub

InBlock.gif
InBlock.gif    
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++
InBlock.gif
    '名称:UpLoadMoreFile
InBlock.gif
    '说明:上传文件
InBlock.gif
    '参数:poFile : 上传文件输入域名,如:txtPicture
InBlock.gif
    '      psPath : 上传虚拟引用路径,如:Pictures
InBlock.gif
    '返回:InValid:上传文件无效
InBlock.gif
    '      Failure:上传文件失败,捕获异常
InBlock.gif
    '      空:不上传文件
InBlock.gif
    '      其它:上传文件成功
InBlock.gif
    '  
InBlock.gif
    '                           cjlwxy  2005-10-12
InBlock.gif
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Function UpLoadMoreFile()Function UpLoadMoreFile(ByVal poFile As System.Web.HttpPostedFile, ByVal psPath As StringAs String
InBlock.gif        
Dim sPath As String
InBlock.gif        
Dim sFileName As String
InBlock.gif        
Dim **As String  '扩展名
InBlock.gif
        '首先判断文件输入域的合法性
InBlock.gif
        If Trim(poFile.FileName) = "" Then
InBlock.gif            
Return ""       '不上传文件
InBlock.gif
        Else
InBlock.gif            
If poFile.ContentLength = 0 Then
InBlock.gif                
'文件不合法或者文件不正确,无法上传
InBlock.gif
                Return "InValid"
InBlock.gif            
Else
InBlock.gif                
'根据用户选择的文件名生成新的服务器文件名称
InBlock.gif
                sFileName = poFile.FileName()
InBlock.gif                
Dim nBackSlash As Integer
InBlock.gif                nBackSlash 
= sFileName.LastIndexOf(".")
InBlock.gif                
If nBackSlash <> -1 Then
InBlock.gif                    
'取文件名后缀
InBlock.gif
                    **= sFileName.Substring(nBackSlash)
InBlock.gif                    
'以所经过的毫秒数为文件名
InBlock.gif
                    sFileName = Now.Ticks.ToString & **t
InBlock.gif                
End If
InBlock.gif                
'获取唯一文件名
InBlock.gif
                sPath = System.Web.HttpContext.Current.Server.MapPath(psPath)
InBlock.gif                sFileName 
= GetUniqueFileName(sPath, sFileName)
InBlock.gif                
'上传文件
InBlock.gif
                Try
InBlock.gif                    poFile.SaveAs(sPath 
& "\" & sFileName)
InBlock.gif                    
Return sFileName
InBlock.gif                
Catch oException As Exception
InBlock.gif                    
Throw oException
InBlock.gif                    
Return "Failure"
InBlock.gif                
End Try
InBlock.gif
InBlock.gif            
End If
InBlock.gif        
End If
ExpandedSubBlockEnd.gif    
End Function

InBlock.gif    
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++
InBlock.gif
    '名称:GetUniqueFileName
InBlock.gif
    '说明:获取上传文件的唯一名
InBlock.gif
    '参数:poFile : 上传文件名
InBlock.gif
    '      psPath : 上传实际路径
InBlock.gif
    '返回:唯一文件名(String)
InBlock.gif
    '
InBlock.gif
    '                           cjlwxy 2005-10-12
InBlock.gif
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Public Shared Function GetUniqueFileName()Function GetUniqueFileName(ByVal psPath As StringByVal psFileName As StringAs String
InBlock.gif        
Dim sFile As String '文件名
InBlock.gif
        Dim **As String  '扩展名
InBlock.gif
        Dim n As Integer = 1
InBlock.gif        
Dim nLastDot As Integer
InBlock.gif
InBlock.gif        sFile 
= psFileName
InBlock.gif        nLastDot 
= sFile.LastIndexOf(".")
InBlock.gif        
If nLastDot = -1 Then
InBlock.gif            
**= ""
InBlock.gif        
Else
InBlock.gif            
**= sFile.Substring(nLastDot)
InBlock.gif            sFile 
= sFile.Substring(0, nLastDot)
InBlock.gif        
End If
InBlock.gif        
Do While File.Exists(psPath & "\" & sFile & **t)
InBlock.gif            sFile 
= sFile & n
InBlock.gif            n 
= n + 1
InBlock.gif        
Loop
InBlock.gif        
Return sFile & **t
ExpandedSubBlockEnd.gif    
End Function

ExpandedSubBlockEnd.gif
End Class

InBlock.gif

转载于:https://www.cnblogs.com/itants/archive/2006/06/15/426736.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值