zoukankan      html  css  js  c++  java
  • Windows Mobile Web方式下载文件

          以前所使用的下载文件,都是通过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;
            }

  • 相关阅读:
    DB2 v8.2,v9.1,v9.5,v9.7下载地址及详细安装图解
    Windows Server 2008 R2遗忘管理员密码后的解决方案
    weblogic的域模式(生产模式、开发模式)
    Linux shell编程 字符串拼接
    Linux rsync命令详解
    oracle 日志组管理
    T-SQL编程规范
    数据库编程起别名的3中方式
    windows server下安装SSHD服务
    网线中的5类线、超5类线、6类线有什么区别?
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168477.html
Copyright © 2011-2022 走看看