关于ASP.NET多文件上传的简便解决方法(不需要动态生成HtmlInputFile)

samchang 2005-09-05 10:46:29
本人刚开始学ASP.NET,以后要长期在这里混了,请大家多多指教!

搜索了一天的关于ASP.NET多文件上传的方法,很多时使用的都是动态生成HtmlInputFile,无非是在HTML上写一段JAVASCRIPT的脚本,动态的生成控件,对于我这个不太懂HTML的人来说,真是看到头大 ^_^!!!

这里我借鉴外国朋友写的源码,重新做了一个多文件上传的方法,原理很简单,就是定义一个COLLECTION,然后放入会话,当选择了一个文件后就将HtmlInputFile作为一个对象添加到COLLECTION,最后到真正上传的时候,再将遍历COLLECTION的元素,存到服务器上.

以下是简单代码:
新开一个工程,放上一个file Field控件,和两个按钮.

Public Class WelcomeAdmin
Inherits System.Web.UI.Page

Private FileCol As New Collection

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
Response.Write("欢迎光临! ")
Page.Session("Files") = FileCol
End If
End Sub
'选择一个文件后,按确定
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
FileCol = Page.Session("Files")
FileCol.Add(Me.File1.PostedFile)
Page.Session("Files") = FileCol

End Sub
'上传文件,我这里选择的是图片
Private Sub Submit1_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit1.ServerClick
Dim PostFile As HttpPostedFile
Dim i As Integer
FileCol = Page.Session("Files")

For i = 1 To FileCol.Count
PostFile = FileCol(i)
Response.Write(PostFile.FileName)
PostFile.SaveAs("C:\Inetpub\wwwroot\JadePubSys\temp\" & i.ToString & ".jpg")
Next
End Sub
End Class



这里没加文件列单,如果加上的话,界面就更直观.
...全文
384 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
samchang 2005-10-08
  • 打赏
  • 举报
回复
感谢楼上,受益匪浅!
  • 打赏
  • 举报
回复
session如果是进程内模式,是只能用于保存易失性的对象(session丢失了应该自动跳转录入界面),不能保存经不起丢失的用户费尽好容易上传的对象。内存被一个简单的用户会话就吃掉了大部分,这是可怕的魔鬼程序员的设计。

但是如果使用进程外模式,那么就要自己写 HttpPostedFile 的序列化、反序列化程序。
  • 打赏
  • 举报
回复
通常都是一次给用户显示多个文件选择框,然后用户选择七八个文件,点击一个“按钮”就可以去喝茶聊天去了.....也许过半个多小时再来看看。

如果选择一个文件,就要看着它上传完,等着下一个选择框出现,好再传下一个,唯恐中间白白让计算机在那里闲着,自己也不能按时休息,这才是浪费时间呢!
zhlzl 2005-09-27
  • 打赏
  • 举报
回复
很好的方法, 但对于大文件不是很适合
xuzhi 2005-09-15
  • 打赏
  • 举报
回复
mark

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧