我有一个silverlight Web应用程序,其中我有播放音频/声音文件的功能。当前声音文件存储在Client Bin文件夹中,声音文件可以在服务器上的任何文件夹中。我想构建一个功能至 将这些声音文件下载到用户pc。 我尝试使用保存文件对话框,但无法下载音频文件。
答案 0 :(得分:0)
试试这个 webclient methods not available to my Silverlight application
通过使用,您可以在Silverlight中获得最佳效果 WebClient.OpenReadCompleted和OpenReadAsync。这将返回一个 流。您可以直接使用它,或将流复制到byte [] as 这里描述的例如: http://www.yoda.arachsys.com/csharp/readbinary.html
答案 1 :(得分:0)
解决方案是 - 我从服务器的客户端bin文件夹中获取了音频文件,然后使用“保存文件”对话框将其下载到客户端计算机上的本地文件夹中。 如下 -
Private Sub btn_downloadSound_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
If streamAudio_download Is Nothing Then
MessageBox.Show("Audio file does not exists for selected sound feature")
Else
saveFileDialog1.Filter = "MP3 Files (*.mp3)|*.mp3|MP4 Files|*.mp4"
saveFileDialog1.ShowDialog()
Dim words As String() = soundFileSelected_Name.Split(".")
Dim fileExtension As String = words(1)
Using audiofs As System.IO.FileStream = saveFileDialog1.OpenFile()
If fileExtension = "mp3" Then
Dim bytes As Byte() = New Byte(40) {}
Dim bytesToRead As Integer = 0
bytesToRead = streamAudio_download.Read(bytes, 0, bytes.Length)
While (bytesToRead = streamAudio_download.Read(bytes, 0, bytes.Length)) <> 0
audiofs.Write(bytes, 0, bytesToRead)
End While
ElseIf fileExtension = "mp4" Then
Dim b As New BinaryWriter(audiofs)
b.Write(byteArray)
audiofs.Close()
End If
End Using
End If
End Sub