微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice下载文件

WebService项目中的Web.config配置代码

    <appSettings>
        <add key="UploadFileFolder" value="/Uploads/TestUpload/" />
    </appSettings>

WebService项目中的ImageService.asmx代码
        /// <summary>
        /// Webservice中的下载文件处理函数
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>返回文件流</returns>
        [WebMethod(Description = "下载服务器站点文件,传递文件相对路径")]
        public byte[] DownloadFile(string strFilePath)
        {
            FileStream fs = null;
            string CurrentUploadFolderPath = Server.MapPath(ConfigurationManager.AppSettings["UploadFileFolder"]);
            string CurrentUploadFilePath = CurrentUploadFolderPath + strFilePath;
            if (File.Exists(CurrentUploadFilePath))
            {
                try
                {
                    ///打开现有文件以进行读取。
                    fs = File.OpenRead(CurrentUploadFilePath);
                    int b1;
                    System.IO.MemoryStream tempStream = new System.IO.MemoryStream();
                    while ((b1 = fs.ReadByte()) != -1)
                    {
                        tempStream.WriteByte(((byte)b1));
                    }
                    return tempStream.ToArray();
                }
                catch (Exception ex)
                {
                    return new byte[0];
                }
                finally
                {
                    fs.Close();
                }
            }
            else
            {
                return new byte[0];
            }
        }

Winform项目中的窗体下载按钮代码
        private void btnDownload_Click(object sender,EventArgs e)
        {
            string CurrentServiceFilePath = this.txtServiceFile.Text.Trim();
            string CurrentDownloadFolderPath = this.txtDownloadFolder.Text.Trim();

            if (CurrentServiceFilePath == "" || CurrentDownloadFolderPath == "")
            {
                MessageBox.Show(DownloadImage(CurrentServiceFilePath,CurrentDownloadFolderPath));      
            }
            else if (CurrentServiceFilePath == "")
            {
                MessageBox.Show("请填写要下载的服务器文件路径和选择本地保存目录");
            }
            else if (CurrentDownloadFolderPath == "")
            {

                MessageBox.Show("请填写要下载的服务器文件路径和选择本地保存目录");
         
            }
        }

Winform项目中的窗体下载按钮调用函数

        /// <summary>         /// 通过WebService下载文件         /// </summary>         /// <param name="ServiceFilePath">服务器图片路径</param>         /// <param name="DownloadFolderPath">本地图片路径</param>         private string DownloadImage(string ServiceFilePath,string DownloadFolderPath)         {             try             {                 string DownloadFileName="";                 if (ServiceFilePath.Contains("/"))                 {                     DownloadFileName=ServiceFilePath.Substring(ServiceFilePath.LastIndexOf("/"));                 }                 else                 {                     DownloadFileName = ServiceFilePath;                 }                 string DownloadFilePath = DownloadFolderPath +"\\"+ DownloadFileName;                 localhost.ImageService myImageService=new localhost.ImageService();                 byte[] bytes = myImageService.DownloadFile(ServiceFilePath);                 if (bytes != null)                 {                     if (!Directory.Exists(DownloadFolderPath)) {                          Directory.CreateDirectory(DownloadFolderPath);                     }                     if (!File.Exists(DownloadFilePath))                     {                         File.Create(DownloadFilePath).dispose();                     }                     //如果不存在完整的上传路径就创建                     FileInfo downloadInfo = new FileInfo(DownloadFilePath);                     if (downloadInfo.IsReadOnly) { downloadInfo.IsReadOnly = false; }                     //定义并实例化一个内存流,以存放提交上来的字节数组。                     MemoryStream ms = new MemoryStream(bytes);                     //定义实际文件对象,保存上载的文件。                     FileStream fs = new FileStream(DownloadFilePath,FileMode.Create);                     ///把内内存里的数据写入物理文件                     ms.Writeto(fs);                     fs.Flush();                     ms.Flush();                     ms.Close();                     fs.Close();                     fs = null;                     ms = null;                 }                 return "下载成功";             }             catch(Exception ex)             {                 return "下载失败"+ex.Message;             }         }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐