您的位置:首页 > 数据库

LightSwitch文件的上传,下载及保存(数据库版)

2017-09-30 07:11 369 查看
需要在服务器端数据库中建立以下字段

二进制、文件名、扩展名

Private Sub 上传_Execute()
' 在此编写您的代码。
Dispatchers.Main.Invoke(
Sub()
'注意!!!要新建数据记录并保存后,才能使用上传功能。否则会提示未生成实例错误。
Dim openDialog As New Controls.OpenFileDialog
openDialog.Filter = "All File|*.*"
If openDialog.ShowDialog = True Then
Using fileData As System.IO.FileStream = openDialog.File.OpenRead
Dim fileLen As Long = fileData.Length
If fileLen > 0 Then
Dim sizeInMB = fileLen / 1048576
If sizeInMB > 2 Then
Me.ShowMessageBox("File Cannot be > 2MB") : Exit Sub
End If
Dim fileBArray(fileLen - 1) As Byte : fileData.Read(fileBArray, 0, fileLen) : fileData.Close()
'把打开的文件存入数据库二进制字段,upfileProperty为屏幕中名称,如为子表或窗口。则为me.表名.selectitem.字段
Me.SjWenJianGuanLiSet.SelectedItem.文件二进制 = fileBArray
'把打开的文件扩展名存入数据库
文件类型 = openDialog.File.Extension.ToString
'把打开的文件名存入数据库
Me.SjWenJianGuanLiSet.SelectedItem.文件名称 = openDialog.File.Name.ToString
End If
End Using
End If
End Sub)
End Sub


***********************************************************************************

Private Sub 下载_Execute()
' 在此编写您的代码。

Dispatchers.Main.Invoke(
Sub()
If Me.SjWenJianGuanLiSet.SelectedItem.文件二进制 Is Nothing Then
Me.ShowMessageBox("数据库未上传相关文件!", "提示!", MessageBoxOption.Ok)
Exit Sub
End If
Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream(Me.SjWenJianGuanLiSet.SelectedItem.文件二进制)
Dispatchers.Main.Invoke(
Sub()
Dim saveDialog As New Controls.SaveFileDialog
saveDialog.DefaultFileName = Me.SjWenJianGuanLiSet.SelectedItem.文件名称
If saveDialog.ShowDialog = True Then
Using FileStream As Stream = saveDialog.OpenFile
ms.WriteTo(FileStream)
End Using
End If
End Sub)
End Sub)

End Sub


***********************************************************************************

Private Sub 打开_Execute()
' 在此编写您的代码。
Try
If AutomationFactory.IsAvailable Then
If Me.SjWenJianGuanLiSet.SelectedItem.文件二进制 Is Nothing Then
Me.ShowMessageBox("数据库未上传相关文件!", "提示!", MessageBoxOption.Ok)
Exit Sub
End If
Dim fullFilePath As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Me.SjWenJianGuanLiSet.SelectedItem.文件名称)
Dim fileData As Byte() = Me.SjWenJianGuanLiSet.SelectedItem.文件二进制.ToArray
If fileData IsNot Nothing Then
Using fs As New FileStream(fullFilePath, FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(fileData, 0, fileData.Length)
fs.Close()
End Using
End If
Dim shell = AutomationFactory.CreateObject("Shell.Application")
shell.shellexecute(fullFilePath)
End If
Catch ex As Exception
'Me.ShowMessageBox(ex.ToString)
End Try
End Sub

二进制文件大小验证控制:
 Private Sub 文件二进制_Validate(results As EntityValidationResultsBuilder)
' results.AddPropertyError("<错误消息>")
'服务器端验证文件大小是否超过2MB,会影响性能。如页面中出现验证次数较少的话,建议页面中验证。
If Me.文件二进制 IsNot Nothing Then
Dim sizeInMB = Me.文件二进制.Length / 1048576
If sizeInMB > 2 Then
results.AddPropertyError("File Cannot be > 2MB")
End If
End If
End Sub

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LightSwitch
相关文章推荐