如何构建从Silverlight应用程序下载音频文件到本地文件夹或下载文件夹的功能?

时间:2015-02-13 05:57:28

标签: vb.net audio silverlight-5.0 audio-streaming

我有一个silverlight Web应用程序,其中我有播放音频/声音文件的功能。当前声音文件存储在Client Bin文件夹中,声音文件可以在服务器上的任何文件夹中。我想构建一个功能至 将这些声音文件下载到用户pc。 我尝试使用保存文件对话框,但无法下载音频文件。

2 个答案:

答案 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