locked
网页上的音频如何下载 RRS feed

  • 问题

  • 我有一个网址,这个网页就是个纯音乐的。

    我想下载来之后保存到文件中。我该如何操作?


    2016年9月17日 8:25

答案

  • 哥们,这个不是WP8.1的写法。UWP吗 ?  不过 我照你的方式用WP8.1 写了个
     private   async   Task<StorageFile>  GetVoiceData()
            {
                
                HttpClient httpclient = new HttpClient();
                var GetData = await httpclient.GetStreamAsync(new Uri("http://dx.sc.chinaz.com/Files/DownLoad/sound1/201207/1771.mp3"));        
                var file = await ApplicationData.Current.LocalCacheFolder.CreateFileAsync("1771.mp3", CreationCollisionOption.ReplaceExisting);
                using (var stream = await file.OpenStreamForWriteAsync())
                {         
                     await GetData.CopyToAsync(stream);            
                     await stream.FlushAsync();
                 
                }
                  var This_Voice_files = await ApplicationData.Current.LocalCacheFolder.GetFileAsync("1771.mp3");
                  voice.Source = new Uri(This_Voice_files.Path, UriKind.Absolute); //测试    
                  voice.Play();
                  return This_Voice_files;
            }
        }


    • 已编辑 ARM830 2016年9月19日 5:27
    • 已建议为答案 ThankfulHeart 2016年9月19日 6:09
    • 已标记为答案 ARM830 2016年9月19日 10:06
    2016年9月19日 5:25

全部回复

  • 我用的WP运行时,貌似WP8.1中没有吧
    2016年9月17日 13:54
  • StorageFile.CreateStreamedFileFromUriAsyncWP8.1有,但是尚未实施..

    Httpclient这个应该是可以得

    2016年9月18日 1:46
  • HttpClient有没有什么具体的方法啊?
    2016年9月18日 3:21
  •  HttpClient client = new HttpClient();
                using (var musicStream = client.GetStreamAsync("http://dx.sc.chinaz.com/Files/DownLoad/sound1/201207/1771.mp3").Result)
                {
                    int currentPos = 0;
                    byte[] tempbyte = new byte[4096];
    
                    MemoryStream ms = new MemoryStream(4096);
                    //当遇到0,表示读完了
                    do
                    {
                        currentPos = musicStream.Read(tempbyte, 0, 4096);
                        ms.Write(tempbyte, 0, currentPos);
                    } while (currentPos != 0);
                    File.WriteAllBytes("c:\\test.mp3", ms.ToArray());
                    System.Console.WriteLine("OK");
                }

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2016年9月18日 5:19
  • 你好FAE9D91C-3F07-4090-91EB-E3F70E4D0617:

        由于没有用过WP开发,我以为是可以通用的……。

         这里附上一个WP的实例,不知道是否有帮助呢:http://www.cnblogs.com/linzheng/archive/2011/11/03/2234971.html


    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2016年9月19日 4:53
  • 哥们,你之前的写c#项目,思路对,但是语法不适合WP

    2016年9月19日 4:58
  • 哥们,你之前的写c#项目,思路对,但是语法不适合WP

    Sorry,后续补上一个,你再看看是否可以呢?

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2016年9月19日 4:59
  • 哥们,这个不是WP8.1的写法。UWP吗 ?  不过 我照你的方式用WP8.1 写了个
     private   async   Task<StorageFile>  GetVoiceData()
            {
                
                HttpClient httpclient = new HttpClient();
                var GetData = await httpclient.GetStreamAsync(new Uri("http://dx.sc.chinaz.com/Files/DownLoad/sound1/201207/1771.mp3"));        
                var file = await ApplicationData.Current.LocalCacheFolder.CreateFileAsync("1771.mp3", CreationCollisionOption.ReplaceExisting);
                using (var stream = await file.OpenStreamForWriteAsync())
                {         
                     await GetData.CopyToAsync(stream);            
                     await stream.FlushAsync();
                 
                }
                  var This_Voice_files = await ApplicationData.Current.LocalCacheFolder.GetFileAsync("1771.mp3");
                  voice.Source = new Uri(This_Voice_files.Path, UriKind.Absolute); //测试    
                  voice.Play();
                  return This_Voice_files;
            }
        }


    • 已编辑 ARM830 2016年9月19日 5:27
    • 已建议为答案 ThankfulHeart 2016年9月19日 6:09
    • 已标记为答案 ARM830 2016年9月19日 10:06
    2016年9月19日 5:25
  • 谢谢了,不用了。我自己照着前面那个哥们照葫芦画瓢弄出来了

    不过我发现的我的基础还真是很弱...基础的思路也不是很清楚. 

    2016年9月19日 5:26
  • HttpClient WP和UWP也是有些不同,WP半数残疾。无奈。

    多少还是不好,不然不会老有问题..我看msdn WP板块最近基本多数都说是我提的问题...  

    不管怎么样,还是谢谢你了,没有你的大体思路,我也是郁闷弄不上来。之前就憋在怎么将获取stream转文件类。这一下好了。

    2016年9月19日 5:45