从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);
}
}
您可以使用以下代码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客户端。
WebClient
或HttpWebRequest
类。