Save MP3 file from URL in VB.NET

做~自己de王妃 提交于 2020-01-24 00:25:08

问题


I'm attempting to download an .mp3 file from my server, and save it locally, in VB.NET. However, when I do so, the saved file is corrupt, as the contents contain multiple lines of things like below, with a ton of random/weird characters below them (I'm assuming the building blocks of the audio file).

Here's what I am seeing: http://i.troll.ws/11d37d00.png

date = "20130811_18:22:58.466";
host = "DC3APS421";
kbps = "48";
khz = "22050";

When I attempt to play the .mp3 file in WMP, it also says it's corrupt. This is the code I'm using to download and save it.

' Download the MP3 file contents

Dim request As WebRequest = WebRequest.Create("http://www.mysite.org/secure/speech/?text=Test.")
request.Credentials = CredentialCache.DefaultCredentials
Dim response As WebResponse = request.GetResponse()
Console.WriteLine(CType(response, HttpWebResponse).StatusDescription)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()

reader.Close()
response.Close()

Debug.Print("Downloaded. Saving to local Audio Cache...")

' Check and create the audio-cache directory

If (Not System.IO.Directory.Exists(WorkingDir + "\audio-cache\")) Then
    Debug.Print("Audio cache directory doesn't exist. Creating... ")
    System.IO.Directory.CreateDirectory(WorkingDir + "\audio-cache\")
    Debug.Print("Created at " + WorkingDir + "\audio-cache\")
End If

Dim Data As String = responseFromServer

' Save the mp3 file!

Dim fileLoc As String = WorkingDir + "\audio-cache\" + Mp3Hash + ".mp3"
Dim fs As FileStream = Nothing
If (Not File.Exists(fileLoc)) Then
    fs = File.Create(fileLoc)
    Using fs

    End Using
End If
If File.Exists(fileLoc) Then
    Using sw As StreamWriter = New StreamWriter(fileLoc)
        sw.Write(Data)
    End Using
End If

Debug.Print("Saved successfully to " + fileLoc)

How can I properly download, and locally save, an mp3 file from a URL?


回答1:


try this

Dim HttpReq As HttpWebRequest = DirectCast(WebRequest.Create("http://...."), HttpWebRequest)

        Using HttpResponse As HttpWebResponse = DirectCast(HttpReq.GetResponse(), HttpWebResponse)
            Using Reader As New BinaryReader(HttpResponse.GetResponseStream())
                Dim RdByte As Byte() = Reader.ReadBytes(1 * 1024 * 1024 * 10)
                Using FStream As New FileStream("FileName.extension", FileMode.Create)
                    FStream.Write(RdByte, 0, RdByte.Length)
                End Using
            End Using
        End Using


来源:https://stackoverflow.com/questions/18177624/save-mp3-file-from-url-in-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!