zoukankan      html  css  js  c++  java
  • 下载文件 http路径ftp路径

     /// <summary>
            /// 下载文件 http路径ftp路径
            /// </summary>
            /// <param name="uri">文件地址</param>
            /// <returns>字节数组</returns>
            static private byte[] ConvertFileToByte(string uri)
            {
                byte[] by = null;
                if (!string.IsNullOrEmpty(uri))
                {
                    WebRequest webRequest = null;
                    WebResponse webResponse = null;
                    try
                    {
                        if (uri.StartsWith("https://", StringComparison.CurrentCultureIgnoreCase)
                       || uri.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase))
                        {
                            webRequest = (HttpWebRequest)WebRequest.Create(uri);
                            webRequest.Method = "get";
                            webRequest.Proxy = null;
                            webResponse = (HttpWebResponse)webRequest.GetResponse();
                        }
                        else if (uri.StartsWith("ftp://", StringComparison.CurrentCultureIgnoreCase))
                        {
                            webRequest = (FtpWebRequest)WebRequest.Create(new Uri(uri));
                            webRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                            ((FtpWebRequest)webRequest).UseBinary = true;
                            webRequest.Proxy = null;
                            webResponse = (FtpWebResponse)webRequest.GetResponse();
                        }
                        else
                        {
                            throw new ArgumentException("uri非http ftp地址");
                        }
                        Stream responseStream = webResponse.GetResponseStream();
                        //创建本地文件写入流
                        MemoryStream stream = new MemoryStream();
                        byte[] bArr = new byte[1024];
                        int size = responseStream.Read(bArr, 0, bArr.Length);
                        while (size > 0)
                        {
                            stream.Write(bArr, 0, size);
                            size = responseStream.Read(bArr, 0, bArr.Length);
                        }
                        by = stream.ToArray();
                        stream.Close();
                        responseStream.Close();
                    }
                    catch (Exception ex)
                    {
    
                    }
                    finally
                    {
                        if (webRequest != null)
                        {
                            webRequest.Abort();
                        }
                        if (webResponse != null)
                        {
                            webResponse.Close();
                        }
                    }
                }
                else 
                {
                    throw new ArgumentException("参数uri空异常");
                }          
                return by;
            }
    
            /// <summary>
            /// 下载文件 http路径ftp路径
            /// </summary>
            /// <param name="uri">文件地址</param>
            /// <returns>字节数组</returns>
            public static byte[] DownLoadFile(string uri)
            {
                byte[] bytes = null;
                if (!string.IsNullOrEmpty(uri))
                {
                    WebRequest webRequest = null;
                    WebResponse webResponse = null;
                    try
                    {
                        if (uri.StartsWith("https://", StringComparison.CurrentCultureIgnoreCase)
                    || uri.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase))
                        {
    
                            webRequest = (HttpWebRequest)WebRequest.Create(uri);
                            webRequest.Method = "get";
                            webRequest.Proxy = null;
                            webResponse = (HttpWebResponse)webRequest.GetResponse();
                        }
                        else if (uri.StartsWith("ftp://", StringComparison.CurrentCultureIgnoreCase))
                        {
                            webRequest = (FtpWebRequest)WebRequest.Create(new Uri(uri));
                            webRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                            ((FtpWebRequest)webRequest).UseBinary = true;
                            webRequest.Proxy = null;
                            webResponse = (FtpWebResponse)webRequest.GetResponse();
                        }
                        else
                        {
                            throw new ArgumentException("uri非http ftp地址");
                        }
    
                        using (webResponse)
                        {
                            using (Stream responseStream = webResponse.GetResponseStream())
                            {
                                using (MemoryStream ms = new MemoryStream())
                                {
                                    byte[] buffer = new byte[2048];
                                    int read = 0;
                                    do
                                    {
                                        read = responseStream.Read(buffer, 0, buffer.Length);
                                        ms.Write(buffer, 0, read);
                                        ms.Flush();
                                    } while (read != 0);
                                    ms.Flush();
                                    bytes = ms.ToArray();
                                }
                            }
                        }
                    }
                    finally
                    {
                        if (webRequest != null)
                        {
                            webRequest.Abort();
                        }
                        if (webResponse != null)
                        {
                            webResponse.Close();
                        }
                    }
                }
                else
                {
                    throw new ArgumentException("参数uri空异常");
                }
                return bytes;
            }
  • 相关阅读:
    php json_encode怪问题
    给phpcms v9添加热门搜索关键词
    magento 1.6 后台无法登录解决办法
    08 baidu QA
    java exception
    java thread / process / thread runnable / thread sleep / thread run
    java reflect
    db sysbase
    内存单元
    分段的方式来管理内存
  • 原文地址:https://www.cnblogs.com/macT/p/13572573.html
Copyright © 2011-2022 走看看