Windows Mobile Web方式下载文件
2009-08-05 09:45
344 查看
以前所使用的下载文件,都是通过webService + WSE进行的,而WebService是以XML为载体的,这样,在下载文件的时候,必然包含着一些没有的结构信息,从而也就增加了实际要下载的文件的大小,对于移动设备而言,网络流量是非常宝贵的,为了节约流量,所以写了一个通过WebRequest和WebResponse完成网络文件下载的方法,改方法的好处是流量比较小,但缺点是,要被现在的文件必须放到Internet网络上,这样便对文件的安全性和下载用户的可控性带来一定的影响,下面是实现的代码
/// <summary>
/// 从指定的URL以二进制方式现在文件
/// </summary>
/// <param name="fileURL">文件所存放的Internet地址</param>
/// <returns>成功下载后,文件在本地存放的位置,如果下载失败,则返回""</returns>
private string DownLoadFile(string fileURL)
{
StreamReader rdr = null;
FileStream wrtr = null;
string localFileName = string.Empty;
try
{
Cursor.Current = Cursors.WaitCursor;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(fileURL);
req.Method = "GET";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
long len = resp.ContentLength;
Stream respStream = resp.GetResponseStream();
localFileName = @"/Program Files/" + fileURL.Substring(fileURL.LastIndexOf("/") + 1);
wrtr = new FileStream(localFileName, FileMode.Create);
byte[] inData = new byte[4096];
int bytesRead = respStream.Read(inData, 0, inData.Length);
while (bytesRead > 0)
{
wrtr.Write(inData, 0, bytesRead);
bytesRead = respStream.Read(inData, 0, inData.Length);
}
//判断下在是否成功
System.IO.FileInfo fi = new FileInfo(localFileName);
if (fi.Length != len)
localFileName = string.Empty;
fi = null;
}
catch (Exception ep)
{
MessageBox.Show(ep.Message);
}
finally
{
if(rdr != null)
rdr.Close();
if(wrtr != null)
wrtr.Close();
Cursor.Current = Cursors.Default;
}
return localFileName;
}
/// <summary>
/// 从指定的URL以二进制方式现在文件
/// </summary>
/// <param name="fileURL">文件所存放的Internet地址</param>
/// <returns>成功下载后,文件在本地存放的位置,如果下载失败,则返回""</returns>
private string DownLoadFile(string fileURL)
{
StreamReader rdr = null;
FileStream wrtr = null;
string localFileName = string.Empty;
try
{
Cursor.Current = Cursors.WaitCursor;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(fileURL);
req.Method = "GET";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
long len = resp.ContentLength;
Stream respStream = resp.GetResponseStream();
localFileName = @"/Program Files/" + fileURL.Substring(fileURL.LastIndexOf("/") + 1);
wrtr = new FileStream(localFileName, FileMode.Create);
byte[] inData = new byte[4096];
int bytesRead = respStream.Read(inData, 0, inData.Length);
while (bytesRead > 0)
{
wrtr.Write(inData, 0, bytesRead);
bytesRead = respStream.Read(inData, 0, inData.Length);
}
//判断下在是否成功
System.IO.FileInfo fi = new FileInfo(localFileName);
if (fi.Length != len)
localFileName = string.Empty;
fi = null;
}
catch (Exception ep)
{
MessageBox.Show(ep.Message);
}
finally
{
if(rdr != null)
rdr.Close();
if(wrtr != null)
wrtr.Close();
Cursor.Current = Cursors.Default;
}
return localFileName;
}
相关文章推荐
- Windows Mobile Web方式下载文件
- Windows Mobile Web方式下载文件
- Windows Mobile Web方式下载文件
- Windows Mobile Web方式下载文件
- windows wininet api 实现下载web服务器文件(l历史代码,贴出共享)
- Web共享文件,隐藏文件路径方式下载
- windows 2012 R2 IIS8 启下web文件下载的方法
- HttpWebRequest 下载网页Html代码 下载文件(Remote和FTP)Get方式
- linux和windows之间上传 下载文件 非ftp方式
- 使用WebView实现文件下载的两种方式
- web 方式访问 Domino 服务器,无法下载文件名包含百分号的文件
- WebRequest 方式 文件下载
- 如果程序集是从 Web 上下载的,即使它存储于本地计算机,Windows 也会将其标记为 Web 文件,http://go.microsoft.com/fwlink/?LinkId=179545
- Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:
- Android 文件下载三种基本方式
- NET(C#):使用HttpWebRequest头中的Range下载文件片段
- 在IE中通过a标签直接下载rar文件时以乱码方式打开
- [原创] ※ 阳阳 Web文件管理插件 ※ 免费提供下载
- 文件流的方式下载文件
- u-boot 内核、文件系统下载方式