从HTTP获取资源并保存到Iso存储

本文关键字:Iso 存储 保存 HTTP 获取 资源 | 更新日期: 2023-09-27 18:12:23

我目前正在使用此代码将媒体保存到隔离存储。如果媒体是本地的,这可以正常工作,但是当我试图从http地址获取媒体时,我在urkind上得到错误。我已经从绝对改变了。到相对,但还是不行

有什么建议吗?

仅供参考- filename = http://www.domain.com/media.wma

错误:无法创建相对URI,因为'uriString'参数表示绝对URI。

或:期望相对Uri,发现绝对Uri。

private void DownloadToIsoStore(string fileName)
        {
            string ringtonePath = GetRingtonePath();
            IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
            // If the file already exists, no need to "download", just return
            if (isoStore.FileExists(fileName))
            {
                return;
            }
            StreamResourceInfo sr = Application.GetResourceStream(new Uri(fileName, UriKind.Relative));
            using (BinaryReader br = new BinaryReader(sr.Stream))
            {
                // Simulate "downloading" medai file
                byte[] data = br.ReadBytes((int)sr.Stream.Length);
                // Save to local isolated storage
                SaveToIsoStore(fileName, data);
            }
        }

从HTTP获取资源并保存到Iso存储

您可以使用以下代码1.使用参数(http://www.domain.com/media.wma)

调用此函数
    public void **GetMediaFile**(string httpPath)
    {
        WebClient wcMedia = new WebClient();
        wcMedia.OpenReadAsync(new Uri(httpPath));
        wcMedia.OpenReadCompleted += new OpenReadCompletedEventHandler(wcMedia_OpenReadCompleted);
        wcMedia.AllowReadStreamBuffering = true;
    }

2。事件处理程序,将媒体文件下载到隔离存储中所需的(iso_path)位置。

    void wcMedia_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {       
        string iso_path="path where you want to put media file insode the isolated storage";
        var isolatedfile = IsolatedStorageFile.GetUserStoreForApplication();
        using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(iso_path, System.IO.FileMode.Create, isolatedfile))
        {
            byte[] buffer = new byte[e.Result.Length];
            while (e.Result.Read(buffer, 0, buffer.Length) > 0)
            {
                stream.Write(buffer, 0, buffer.Length);
            }
        }

}

Application.GetResourceStream接受嵌入到应用程序中的资源的相对URI。
它不是HTTP客户端。

您应该使用WebClientHttpWebRequest类。