使用WebService实现文件上传

使用WebService实现文件上传

       使用WebService实现文件上传,具体方法如下:
      
       //文件引用
      using System.IO;
      using System.Drawing;
      using System.Configuration;
       //日志引用
       using Fx678Member.Framework.Log;     


        #region 全局变量
        /// <summary>
        /// ImageType 文件类型
        /// </summary>
        List<String> ImageType = new List<string>() { };


        /// <summary>
        /// FileType 文件类型
        /// </summary>
        List<String> FileType = new List<string>() { };


        /// <summary>
        /// 网站域名配置
        /// </summary>
        String WebsiteName = String.Empty;
        #endregion




        /// <summary>
        /// 文件上传的方法
        /// </summary>
        /// <param name="fileType">文件后缀名</param>
        /// <param name="GetBinaryFile">文件数据组</param>
        /// <param name="WebSiteName">站点名</param>
        /// <returns></returns>
        [WebMethod(Description = "WebService 文件上传")]
        public string Upload(String fileType, byte[] GetBinaryFile, String WebSiteName)
        {
            String result = String.Empty;


            try
            {
                //获取配置的图片、文件类型
                ImageType = ConfigurationManager.AppSettings["Image"].Split('|').ToList();
                FileType = ConfigurationManager.AppSettings["File"].Split('|').ToList();
                WebsiteName = ConfigurationManager.AppSettings["WebSiteName"].ToString();


                //判断文件类型是否符合要求
                if (ImageType.Contains(fileType))
                {
                    //上传的为图片
                    result = UploadImage(fileType, GetBinaryFile, WebSiteName);
                }
                else if (FileType.Contains(fileType))
                {
                    //上传的为文件
                    result = UploadFile(fileType, GetBinaryFile, WebSiteName);
                }
                else
                {
                    result = "Error:很遗憾文件格式有误! \n" +
                             "支持的图片格式为:" + String.Join("|", ImageType) + "\n" +
                             "支持的文件格式为:" + String.Join("|", FileType);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Upload 文件上传的方法异常", ex);
                result = "Error:Upload 文件上传的方法异常";
            }


            //返回结果
            return result;
        }




        /// <summary>
        /// 图片上传
        /// </summary>
        /// <param name="fileType">文件后缀名</param>
        /// <param name="GetBinaryFile">文件字节数组</param>
        /// <param name="Website">站点名</param>
        /// <returns></returns>
        private String UploadImage(String fileType, byte[] GetBinaryFile, String Website)
        {
            String result = String.Empty;


            try
            {
                byte[] image = GetBinaryFile;
                if (image != null && image.Length > 0)
                {
                    //判断图片大小
                    int size = int.Parse(System.Configuration.ConfigurationManager.AppSettings["ImageSize"].ToString());
                    if (image.Length <= size)
                    {
                        //定义Bitmap对象
                        Bitmap bmp = new Bitmap(new System.IO.MemoryStream(image));


                        //保存
                        String file = GetFileSrc("Image", Website) + "/" + DateTime.Now.ToString("yyyyMMddhhmmss") + fileType;
                        bmp.Save(Server.MapPath(file));


                        //判断是否成功
                        if (File.Exists(Server.MapPath(file)))
                        {
                            //保存成功,返回绝对地址
                            result = "Success:" + WebsiteName + "/" + file;
                        }
                        else
                        {
                            //保存失败
                            result = "Error:图片文件保存失败!";
                        }
                    }
                    else
                    {
                        result = "Error:图片大小不超过" + size + "字节(Byte)";
                    }
                }
                else
                {
                    result = "Error:文件路径有误!";
                }
            }
            catch (Exception ex)
            {
                Logger.Error("UploadImage 图片上传异常", ex);
                result = "Error:UploadImage 图片上传异常!\n详细请参考日志信息";
            }
            return result;
        }




        /// <summary>
        /// 文件上传
        /// </summary>
        /// <param name="fileType">后缀名</param>
        /// <param name="src">地址</param>
        /// <param name="Website">站点域名</param>
        /// <returns></returns>
        private String UploadFile(String fileType, byte[] GetBinaryFile, String Website)
        {
            String result = String.Empty;


            try
            {
                byte[] file = GetBinaryFile;
                if (file != null && file.Length > 0)
                {
                    //判断文件大小
                    int size = int.Parse(System.Configuration.ConfigurationManager.AppSettings["FileSize"].ToString());
                    if (file.Length <= size)
                    {
                        //保存
                        String filep = GetFileSrc("File", Website) + "/" + DateTime.Now.ToString("yyyyMMddhhmmss") + fileType;
                        String filename = Server.MapPath(filep);
                        using (FileStream filestream = new FileStream(filename, FileMode.Create, FileAccess.Write))
                        {
                            //写入文件
                            filestream.Write(file, 0, file.Length);
                            filestream.Flush();


                            //关闭
                            filestream.Close();


                            //判断是否成功
                            if (File.Exists(filename))
                            {
                                result = "Success:" + WebsiteName + "/" + filep;
                            }
                            else
                            {
                                result = "Error:文件上传失败!请稍后再试";
                            }
                        }
                    }
                    else
                    {
                        result = "UploadFile 上传的文件大小不能超过" + size + "字节(Byte)";
                    }
                }
                else
                {
                    result = "Error:文件路径有误!";
                }
            }
            catch (Exception ex)
            {
                Logger.Error("UploadFile 文件上传异常!", ex);
                result = "UploadFile 文件上传异常!";
            }


            return result;
        }




        /// <summary>
        /// 获取保存路径
        /// </summary>
        /// <param name="type">文件类型:Image File</param>
        /// <param name="Website">域名</param>
        /// <returns></returns>
        private String GetFileSrc(String type, String Website)
        {
            //判断该域名下,是否有对应文件夹
            String dt = DateTime.Now.ToString("yyyyMMdd");
            String path = Website + "_" + type + "/" + dt;
            if (!Directory.Exists(Server.MapPath(path)))
            {
                Directory.CreateDirectory(Server.MapPath(path));
            }


            return path;
        }


      功能完成后部署到IIS上,调用即可。方法如下:
       //文件流
       byte[] myFile = ConvertFileToByteBuffer(this.fupImg1.PostedFile.InputStream);
       
       //文件类型(文件后缀名)
       String filetype = System.IO.Path.GetExtension(this.fupImg1.FileName);

      //调用服务
      String result = service.Upload(filetype, myFile, Websitename);
       
    
    #region 返回指定文件流数组
    /// <summary>
    /// 返回指定文件流数组
    /// </summary>
    /// <param name="stream"></param>
    /// <returns></returns>
    private byte[] ConvertFileToByteBuffer(Stream stream)
    {
        int b = new int();
        MemoryStream memostream = new MemoryStream();
        while ((b = stream.ReadByte()) != -1)
        {
            memostream.WriteByte((byte)b);
        }


        return memostream.ToArray();
    }
    #endregion
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追夢秋陽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值