格盘数据库文件玩完了之后,只能重新写,好不心甘,通过一整天的奋斗,恢复了50%左右,修复的过程还是让自己增加了知识,30多个存储过程的重写,让自己有了更深的了解,在恢复系统的过程中自己完善了消息这一模块,在做的过程中被上传文件大小的限制卡了很久,后来通过朋友们的点拨同时结合自己在网上和MSDN上面查找的一些信息的整合,完成了这一部分,下面我就来说下我知道的上传文件的一些操作:

获取上传文件的扩展名:Dim FileExt As String = Right(filename, (filename.Length - InStrRev(filename, ".")))   

InStrRev函数是返回某一字符串从另一字符串的右侧开始算起第一次出现的位置〕

 

判断上传的文件是否是所允许的上传文件类型:

Dim filetype As String = "rar|doc|jpg|txt|gif|png|swf|rm|mp3|wmv"

            Dim filetypes() As String = Split(filetype, "|")

            Dim filesplit() As String = Split(MessageFile.PostedFile.FileName, "\")

            Dim filename As String = filesplit(filesplit.Length - 1)

Dim FileExt As String = Right(filename, (filename.Length - InStrRev(filename, ".")))   

            Dim i As Integer

            Dim IsEnableUpload As Boolean

            IsEnableUpload = False

            For i = 0 To filetypes.Length - 1

                If filetypes(i) = FileExt Then

                    IsEnableUpload = True

                    Exit For

                End If

            Next

            If Not IsEnableUpload Then

                If Not IsClientScriptBlockRegistered("PopupMessageBox") Then

                    RegisterStartupScript("PopupMessageBox", "<script>alert('禁止上传文件格式:" & FileExt & "')</script>")

                End If

            Else

如上就可以控制上传文件的类型了,文件上传的类型是控制了,那么大小呢?

我们都知道,大小可以用UpLoadFile.PostedFile.ContentLength控制,比如,我要控制上传文件的大小不能超过2MB,那么就可以这样设置

If UpLoadFile.PostedFile.ContentLength > 2 * 1024 * 1024 Then

       LblMessageFileUrl.Text = "附件过大,无法上传!"

End if

当你在测试过程中使用这一功能你会发现,当你文件很大时,上面的限制并不能生效,而是页面直接出现错误,无法显示,这是因为在.net中,默认上传文件大小的最大值就只有4MB,你可以重新试试,当我们上传的文件的大小在2MB4MB之间时,上面的文件大小限制是能生效的,再大就不行了,如果由于工作需要上传比4MB更大的文件怎么办呢,我们可以通过设置web.config文件来实现:

   <httpRuntime maxRequestLength="10240"

         useFullyQualifiedRedirectUrl="true"

         executionTimeout="45"/>

这里我们设置的上传文件大小的上限是10MB,这样,我们在上传10MB以下的文件就不会出错了。

对于上传文件过大出现的页面无法显示的问题我还没有解决,用try catch 语句老是抓不到异常,如果你知道的话,希望能指点一下我。

文件的类型和大小我们都限制了,现在剩下的就是把它上传上去同时把上传以后的文件的路径保存到数据库中。

上传文件:  MessageFile.PostedFile.SaveAs(Server.MapPath(".") & "\UpLoadFiles\" & filename)

                        LblMessageFileUrl.Text = "UpLoadFiles\" + filename

                        LblUpLoadFile.Text = "附件上传成功!"

对于路径的数据库保存也就是和保存平常的字段一样,保存的是文件相对于应用程序的路径。

写了一整天了,写到头皮发麻,所以就在一边休息的时候整理一下文件上传的方法。希望大家批斗。